問題タブ [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.
python - Django モデルクエリをモックする方法
CanonPerson
次のモデルをモックしたい
CanonPerson.objects.filter
継続できるように、相互利用可能なコレクションを返すためにモックする方法がまったくわかりません。
これは私がこれまでに行ったことです:
私が見ることができる計算関数にcpses
は、MagicMock タイプがあります。ただし、それは反復可能ではなく、for loop
その後、それを飛び越えるだけです。戻り値を[mock_cp]
に設定することで、反復可能なリストを作成したと思いましたか?
python - モックされたメソッドの 2 番目のパラメーターをテストする方法は?
メソッドをモックしようとしていてsendEmails()
、2 番目のパラメーターが "test@test.com" メール アドレスで呼び出されているかどうかをテストしたいと考えています。
利用できassert_called_with
ますが、このテスト ケースの最初のパラメーターは気にしません。最初のパラメーターに何かを受け入れると言う方法はありますか?
python - 呼び出しの戻り値について Python モック オブジェクトを照会することは可能ですか?
Python 3 モック オブジェクトは、呼び出しに対する引数のクエリをサポートしていますが、呼び出しによって返される値をクエリすることもできますか?
私の特定のシナリオは、tempfile.mkdtemp をモックすることですが、副作用として実際の mkdtemp を呼び出します。テストで作成された一時ディレクトリを取得したいと思います。
python - モック化されたクラスの __init__ の実行を避ける
高価な機能を持つクラスがあり__init__
ます。この関数をテストから呼び出したくありません。
この例では、例外を発生させるクラスを作成しました__init__
。
のインスタンスを構築し、そのClassWithComplexInit
関数を使用する 2 番目のクラスがあります。
の周りにいくつかの単体テストを作成しようとしていSystemUnderTest#my_func()
ます。私が抱えている問題は、どのようにモックしようとしてもClassWithComplexInit
、__init__
関数が常に実行され、例外が発生することです。
上記の 2 番目のアプローチは、この同様の Q&Aから得たものですが、どちらも機能しませんでした。関数を実行していないように見え__init__
ましたが、結果が値ではなくモック インスタンスになるため、アサーションは失敗します。
また、ドキュメントが示唆するように関数と関数を使用してpatch
、関数でインスタンスを構成しようとしました。setUp
start
stop
__init__
これも私の機能を回避しているようですが、設定した値get_value.return_value
は尊重されておらず、get_value()
まだインスタンスを返していMagicMock
ます。
__init__
テスト対象のコードによってインスタンス化された複雑なクラスをモックするにはどうすればよいですか? 理想的には、TestCase クラス内の多くの単体テストでうまく機能するソリューションが必要です (たとえば、patch
すべてのテストを必要としません)。
私は Python バージョンを使用してい2.7.6
ます。
python - Python の `unittest.mock.patch` はグローバル状態を変更しますか?
mock.patch
Python の( unittest.mock.patch
Py3 の) コンテキスト マネージャーがグローバル状態を変更するかどうか、つまり、スレッド セーフかどうかを判断しようとしています。
例: 1 つのスレッドがコンテキスト マネージャーを使用して関数bar
内の関数にパッチを適用foo
し、コンテキスト マネージャー内でインタープリターがそのスレッドを一時停止し (GIL などの理由で)、そのfoo
コンテキスト マネージャーの外部で実行される別のスレッドを再開するとします。がスレッドセーフである場合、関数およびpatch
のグローバル状態は変更されていないことが期待されるため、2 番目のスレッドは の通常の動作を取得します。しかし、グローバル状態を変更すると、2 番目のスレッドは、コンテキスト マネージャー内になくても、変更された動作を取得します。foo
bar
foo
patch
foo
ソースコードを参照しましたが、見ただけでははっきりとはわかりませんでした。
python - 内部呼び出し (xlwt) をモックする方法は?
私はこのようなテストケースを持っています:
実際のメソッドは何らかの処理を行い、結果を Excel スプレッドシートに保存します。
私のモック パッチは workbook.save() を引き継がないようです。何が欠けていますか?
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'".
このエラーを解決するにはどうすればよいですか?
テストは次のとおりです。
python - 特定の引数のみを持つ Python モック関数
私はPythonが初めてで、特定の引数が渡された場合にのみ関数をモックしようとしています. 目的の引数以外が渡された場合は、代わりに元の関数を呼び出したいと思います。
Python 2.7 では、次のようなことを試しました。
original_config
は のコピーではないため、機能しませんconfig
。無限ループに陥る同じモジュールを参照します。config
代わりに元のモジュールのクローンを作成することもできますが、それはやり過ぎのようです。
私が使用できるRSpecのモックに似たものはありますか? 例えば:
obj.stub(:message).with('an_expected_argument').and_return('a_mocked_result')
どんな助けでも大歓迎です。ありがとう。
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 に移動したくない場合はどうすればよいですか?