タグ付けされた質問 「python-mock」

1
Pythonは複数の戻り値を模擬
私はpythons mock.patchを使用していて、呼び出しごとに戻り値を変更したいと思います。ここで注意点があります。パッチを適用する関数には入力がないため、入力に基づいて戻り値を変更できません。 これが参考のための私のコードです。 def get_boolean_response(): response = io.prompt('y/n').lower() while response not in ('y', 'n', 'yes', 'no'): io.echo('Not a valid input. Try again']) response = io.prompt('y/n').lower() return response in ('y', 'yes') 私のテストコード: @mock.patch('io') def test_get_boolean_response(self, mock_io): #setup mock_io.prompt.return_value = ['x','y'] result = operations.get_boolean_response() #test self.assertTrue(result) self.assertEqual(mock_io.prompt.call_count, 2) io.prompt「入力」のプラットフォームに依存しない(python 2および3)バージョンです。したがって、最終的にはユーザーの入力を模倣しようとしています。戻り値にリストを使用してみましたが、それではうまくいきません。 戻り値が無効な場合、ここで無限ループが発生することがわかります。したがって、最終的に戻り値を変更して、テストが実際に終了する方法が必要です。 (この質問に答える別の可能な方法は、ユニットテストでユーザー入力をどのように模倣できるかを説明することです) …

6
Mockを使用して関数/メソッドが呼び出されなかったことを表明する
Mockライブラリを使用してアプリケーションをテストしていますが、一部の関数が呼び出されなかったと主張します。モックドキュメントはやなどのメソッドについて話しますがmock.assert_called_with、モックが呼び出されmock.assert_called_once_withなかったことmock.assert_not_calledを確認するためのようなものや何かに関連するものは見つかりませんでした。 私は次のようなもので行くことができますが、それはクールでもPythonicでもないようです: def test_something: # some actions with patch('something') as my_var: try: # args are not important. func should never be called in this test my_var.assert_called_with(some, args) except AssertionError: pass # this error being raised means it's ok # other stuff これを達成する方法はありますか?

2
Pythonインポートされたモジュールから関数をモックする
@patchインポートしたモジュールから関数を作成する方法を知りたい。 これが今のところです。 app / mocking.py: from app.my_module import get_user_name def test_method(): return get_user_name() if __name__ == "__main__": print "Starting Program..." test_method() app / my_module / __ init__.py: def get_user_name(): return "Unmocked User" test / mock-test.py: import unittest from app.mocking import test_method def mock_get_user(): return "Mocked This Silly" @patch('app.my_module.get_user_name') class MockingTestTestCase(unittest.TestCase): …

1
関数をモックして例外を発生させ、exceptブロックをテストする
foo別の関数(bar)を呼び出す関数()があります。呼び出しでbar()が発生したHttpError場合、ステータスコードが404の場合は特別に処理し、それ以外の場合は再発生させます。 このfoo関数の周りにいくつかの単体テストを書いて、への呼び出しを模倣しようとしていますbar()。残念ながら、ブロックでbar()キャッチされた例外を発生させるためにモックされた呼び出しを取得できませんexcept。 これが私の問題を説明する私のコードです: import unittest import mock from apiclient.errors import HttpError class FooTests(unittest.TestCase): @mock.patch('my_tests.bar') def test_foo_shouldReturnResultOfBar_whenBarSucceeds(self, barMock): barMock.return_value = True result = foo() self.assertTrue(result) # passes @mock.patch('my_tests.bar') def test_foo_shouldReturnNone_whenBarRaiseHttpError404(self, barMock): barMock.side_effect = HttpError(mock.Mock(return_value={'status': 404}), 'not found') result = foo() self.assertIsNone(result) # fails, test raises HttpError @mock.patch('my_tests.bar') def test_foo_shouldRaiseHttpError_whenBarRaiseHttpErrorNot404(self, barMock): barMock.side_effect …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.