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)バージョンです。したがって、最終的にはユーザーの入力を模倣しようとしています。戻り値にリストを使用してみましたが、それではうまくいきません。 戻り値が無効な場合、ここで無限ループが発生することがわかります。したがって、最終的に戻り値を変更して、テストが実際に終了する方法が必要です。 (この質問に答える別の可能な方法は、ユニットテストでユーザー入力をどのように模倣できるかを説明することです) …