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 を受け取るようにした。