私のテストファイルでは、モジュール内に含まれているヘルパー関数を模擬したいと思います。私は '正常に'(つまり、コンパイルやランタイムエラーはなく、すべてが適切にリンクされているので)機能をモックすることはできますが、モックは私がテストしているクラスに流されません。Pythonモック関数とインポートモック
私は依存性注入について検討しましたが、今のところ、1つの機能しか持たないモジュールを注入する方法が正確にはわかりません。最終的に私はほぼすべての機能を嘲笑する予定です。私はちょうど最初に働くベースラインを得たいです。ここで
がアサートコマンドが失敗し、メソッドが呼び出されなかったことを報告している私がこれまで持っているもの
class FooTestCase(unittest.TestCase):
@mock.patch('modules.MyHelperModule.helper_function')
def test_simple(self, mock_hf):
my_obj = MyObj()
# internally, this class imports HelperModule
# and the method calls helper_function with 1
my_obj.do_something()
mock_hf.helper_function.assert_called_with(1)
return
です。私はモックがmy_objに決して通らないと仮定しています。
MyObjのinitメソッドでフラグを作成してtesting = Falseと同様にインポートすることができますが、テストファイルでのみ侮られたモジュールをどうやってインポートできますか?これは私が今考えているアプローチですが、私は同じ結果を得る他の実装にもオープンしています。ダニエル・ローズマンさんのコメントに応えて
、このmyobjでは、私が
ImportError: No module named modules
マイパッチラインが今のように見えるエラーを取得しています、
from modules.HelperModule import helper_function
しかし次の行を持っています
@mock.patch('MyObj.modules.HelperModule.helper_function')
どんな助けも常に高く評価されます。ありがとうございました!
この記事を読む:[パッチを当てる](https://docs.python.org/3/library/unittest.mock.html#where-to-patch) –
私自身の研究を続けると、私はちょうど同じ記事になった!ありがとうございました。あなたはドキュメントよりも詳細なバージョンを知っていますか? –