http://nao-y.hatenablog.com/entry/2018/08/01/231336 のコードではまった原因
Pythonでは import
したモジュールはキャッシュされ、もう一度 import
してもインポート処理は省略され、キャッシュが使われる
- このため、
import_module
関数を使ってもimport
文を使っても、fortune.py
は1回しか実行されない - blogでは、この問題回避のために
reload
を使っている - このgistのコードでは、import時のコード実行にたよらずに、main関数を用意し、テストからはこれを呼ぶことで明示的に実行している
このgistのテストコードでは、patchデコレータの引数を変えた版を用意した(test2.py)。
また、テストメソッドにはmock後のオブジェクトが渡されるため、引数に m
を受け取るようにした。