私はpythonで作業していて、テストに少し慣れていません。外部の依存関係を次のようなローカルメソッドに置き換えるテストをよく目にします。
import some_module
def get_file_data():
return "here is the pretend file data"
some_module.get_file_data = get_file_data
# proceed to test
question のように、これは「モンキーパッチ」と呼ばれています。また、「モック」という言葉が「マネーパッチ」と一緒に、または非常によく似たシナリオでよく使用されているのもわかります。
2つのコンセプトに違いはありますか?
モンキーパッチ 実行時に関数/メソッド/クラスを別のものに置き換えて、パープのテスト、バグの修正、またはその他の動作の変更を行います。
nittest.mockライブラリ は、モンキーパッチを使用して、テスト対象のソフトウェアの一部をモックオブジェクトに置き換えます。次のような巧妙な単体テストを作成するための機能を提供します。
patch()
。return_value
)、特定の例外を発生させます(side_effect
)。たとえば、モックを使用してクライアントのネットワークI/O(urllib、requests)を置き換えることができるため、単体テストは外部サーバーに依存せずに機能します。