-
prepare
実行に必要なデータを準備する。 -
execute
テストするメソッドの実行 -
verify
期待する結果を準備する。
実行した結果が、期待する結果になっているか確認する。
ここでは、pythonのテストが実行する前にclass
で共通するものを格納しておきます。
initialize
などをよくここでします。
各テストメソッドの前後に実行される。
クラス全体に1度だけ実行される。
@patch(使用したいメソッド)
class SampleTest(unittest.TestCase):
@patch(test.mail.load)
@patch(test.mail.save)
def test_method_pattern1(self, save_mock, save_load): # 逆に引数を設定されるので注意
# 値を設定する場合は、return_valueに値を入れる
save.return_value = pd.read_csv('test.csv')
# こういう書き方もできるっぽい
@patch('myapp.utils.spam', return_value=100)
実行した際に
パッチ機能は、3種類があります。
- mock.patch
- mock.patch.object
- mock.patch.dict
- mock(Pythonモックライブラリ)についてのメモ
https://qiita.com/FGtatsuro/items/eea263bc15ebfb9767cd - デコレータの役割
https://qiita.com/mtb_beta/items/d257519b018b8cd0cc2e - [python] まだmockで消耗してるの?mockを理解するための3つのポイント http://note.crohaco.net/2015/python-mock/
return_value
と side_effect
を同時に指定した場合、side_effect
が優先されるようです。
毎回同じ値を返します。
異なった返却値を返せたり、例外を起こすことが可能です。
(もし呼び出されたことがなければ) None、それ以外であれば最後に呼び出された時の引数を返します。
モックの呼び出しを順に記録したリストです。 複数回モックが呼ばれる際に使用します。 モックを作成してから一度も呼び出しを行なっていない場合は、空のリストが返されます。
https://docs.python.org/ja/3/library/unittest.mock.html
http://note.crohaco.net/2015/python-mock/