問題タブ [python-mock]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
5591 参照

python - Django モデルクエリをモックする方法

CanonPerson次のモデルをモックしたい

CanonPerson.objects.filter継続できるように、相互利用可能なコレクションを返すためにモックする方法がまったくわかりません。

これは私がこれまでに行ったことです:

私が見ることができる計算関数にcpsesは、MagicMock タイプがあります。ただし、それは反復可能ではなく、for loopその後、それを飛び越えるだけです。戻り値を[mock_cp]に設定することで、反復可能なリストを作成したと思いましたか?

0 投票する
1 に答える
73 参照

python - モックされたメソッドの 2 番目のパラメーターをテストする方法は?

メソッドをモックしようとしていてsendEmails()、2 番目のパラメーターが "test@test.com" メール アドレスで呼び出されているかどうかをテストしたいと考えています。

利用できassert_called_withますが、このテスト ケースの最初のパラメーターは気にしません。最初のパラメーターに何かを受け入れると言う方法はありますか?

0 投票する
2 に答える
1599 参照

python - 呼び出しの戻り値について Python モック オブジェクトを照会することは可能ですか?

Python 3 モック オブジェクトは、呼び出しに対する引数のクエリをサポートしていますが、呼び出しによって返される値をクエリすることもできますか?

私の特定のシナリオは、tempfile.mkdtemp をモックすることですが、副作用として実際の mkdtemp を呼び出します。テストで作成された一時ディレクトリを取得したいと思います。

0 投票する
1 に答える
1454 参照

python - モック化されたクラスの __init__ の実行を避ける

高価な機能を持つクラスがあり__init__ます。この関数をテストから呼び出したくありません。

この例では、例外を発生させるクラスを作成しました__init__

のインスタンスを構築し、そのClassWithComplexInit関数を使用する 2 番目のクラスがあります。

の周りにいくつかの単体テストを作成しようとしていSystemUnderTest#my_func()ます。私が抱えている問題は、どのようにモックしようとしてもClassWithComplexInit__init__関数が常に実行され、例外が発生することです。

上記の 2 番目のアプローチは、この同様の Q&Aから得たものですが、どちらも機能しませんでした。関数を実行していないように見え__init__ましたが、結果が値ではなくモック インスタンスになるため、アサーションは失敗します。

また、ドキュメントが示唆するように関数と関数を使用してpatch、関数でインスタンスを構成しようとしました。setUpstartstop

__init__これも私の機能を回避しているようですが、設定した値get_value.return_valueは尊重されておらず、get_value()まだインスタンスを返していMagicMockます。

__init__テスト対象のコードによってインスタンス化された複雑なクラスをモックするにはどうすればよいですか? 理想的には、TestCase クラス内の多くの単体テストでうまく機能するソリューションが必要です (たとえば、patchすべてのテストを必要としません)。

私は Python バージョンを使用してい2.7.6ます。

0 投票する
2 に答える
2437 参照

python - Python の `unittest.mock.patch` はグローバル状態を変更しますか?

mock.patchPython の( unittest.mock.patchPy3 の) コンテキスト マネージャーがグローバル状態を変更するかどうか、つまり、スレッド セーフかどうかを判断しようとしています。

例: 1 つのスレッドがコンテキスト マネージャーを使用して関数bar内の関数にパッチを適用fooし、コンテキスト マネージャー内でインタープリターがそのスレッドを一時停止し (GIL などの理由で)、そのfooコンテキスト マネージャーの外部で実行される別のスレッドを再開するとします。がスレッドセーフである場合、関数およびpatchのグローバル状態は変更されていないことが期待されるため、2 番目のスレッドは の通常の動作を取得します。しかし、グローバル状態を変更すると、2 番目のスレッドは、コンテキスト マネージャー内になくても、変更された動作を取得します。foobarfoopatchfoo

ソースコードを参照しましたが、見ただけでははっきりとはわかりませんでした。

0 投票する
1 に答える
204 参照

python - 内部呼び出し (xlwt) をモックする方法は?

私はこのようなテストケースを持っています:

実際のメソッドは何らかの処理を行い、結果を Excel スプレッドシートに保存します。

私のモック パッチは workbook.save() を引き継がないようです。何が欠けていますか?

0 投票する
1 に答える
166 参照

python - `assert not mock.method.called` を使用しようとするとエラーが発生します

Python Mock を使用してメソッドが呼び出されていないと主張しようとしています。残念ながら、私はこのエラーを乗り越えることができないようです:

テスト用に Python 2.7.1 と Python Mock 0.1.0 を実行しています。Google のコメント:No results found for "AttributeError: MockCallable instance has no attribute 'called'".このエラーを解決するにはどうすればよいですか?

テストは次のとおりです。

0 投票する
1 に答える
3615 参照

python - 特定の引数のみを持つ Python モック関数

私はPythonが初めてで、特定の引数が渡された場合にのみ関数をモックしようとしています. 目的の引数以外が渡された場合は、代わりに元の関数を呼び出したいと思います。

Python 2.7 では、次のようなことを試しました。

original_configは のコピーではないため、機能しませんconfig。無限ループに陥る同じモジュールを参照します。config代わりに元のモジュールのクローンを作成することもできますが、それはやり過ぎのようです。

私が使用できるRSpecのモックに似たものはありますか? 例えば:

obj.stub(:message).with('an_expected_argument').and_return('a_mocked_result')

どんな助けでも大歓迎です。ありがとう。

0 投票する
1 に答える
2009 参照

python - 他のモジュールからのモック関数

私は2つのpythonファイルを持っています:

関数.py:

そしてmocking.py:

func をモックしたいのですが、肯定的な結果はありません。AssertionError: 'string' != 20 があります。正しくモックするにはどうすればよいですか? mock.patch ('func') を実行すると、 TypeError: Need a valid target to patch があります。あなたが提供したもの: 'func'. func を mocking.py に移動して foo: function.foo() を呼び出すと、正しく動作します。しかし、関数を function.py から mocking.py に移動したくない場合はどうすればよいですか?