このモジュールをテストしたいとします。
import osutils
def check_ip6(xml):
ib_output = osutils.call('iconfig ib0')
# process and validate ib_output (to be unit tested)
...
このメソッドは、システム コール (特定のネットワーク インターフェイスを想定) を行うため、環境に依存しているため、テスト マシンで呼び出すことはできません。
ib_output の処理が期待どおりに機能するかどうかをチェックする、そのメソッドの単体テストを書きたいと思います。したがって、モックosutils.call
を作成して、テストデータを返すだけにします。それを行うための好ましい方法は何ですか?モッキングや (モンキー) パッチを適用する必要がありますか?
テスト例:
def test_ib6_check():
from migration import check_ib6
# how to mock os_utils.call used by the check_ib6-method?
assert check_ib6(test_xml) == True