一般的な Mock の使い方の中には次のものがあります: - メソッドにパッチを当てる - オブジェクトに対するメソッド呼び出しを記録する
One reason to use Python mock objects is to control your code’s behavior during testing.
サードパーティ製の pytest の使い勝手が良いため、pytest を使って書かれることが多いです。そこでここでは pytest の簡単な使い方について説明します。
HTTP接続できない環境でもテストできるようにしたい
テストコードを書く機会があり、結構苦労したのでまとめてみたいと思います。
ポイントはテスト対象モジュール内での外部ライブラリのimportの仕方にある。 from requests import Sessionとした場合、Sessionクラスはimportを実行したモジュール空間下に置かれる。
しかし、'置き換えたいモジュール名'で指定すべき内容が少しわかりづらいと思います。
以下のような、visaモジュールを使って外部の機器と通信を取るCommunicationクラスを例にとります。
- 属性self.can_printは、メソッド内で初期化しているため、外部からデータを与えられない - validate()メソッドは、内部でデータベースなどで複雑な処理をしているため、is_ok=Trueとなるデータを用意できない のため、validate()メソッドをモックに差し替えたいと考えています。
## set_complex()が1回でも呼ばれたか mock_lib.set_complex.assert_called()