1

MagicMock を使用した Python での単体テストは初めてです。Python で正しいメソッド数をアサートする次のコードがあります。

 def methodFoo(self):
       for booObject in self.booObjectList:
            booObject.shooMethod()

shooMethod()単体テスト コードでメソッドのアサーション コール カウントを実行して、その中の N 個のオブジェクトbooObjectListが N 個の呼び出しを実行するかどうかを確認したいと考えています。上記の関数は、私の単体テスト コードではありません。test_methodFoo()私の単体テストクラスに新しいメソッドを作成してテストするメソッドです。どうすればいいですか?助けてくれてありがとう。

4

2 に答える 2

1

Mockオブジェクトにはcalled、モックが呼び出されたかどうかを追跡する属性と、呼び出さcall_countれた回数を追跡する属性があります。

def test_methodFoo(self):
    self.object_under_test.methodFoo()
    self.assertTrue(all([booObject.shooMethod.called for
                         booObject in self.object_under_test.booObjectList]))

ただし、次のようなことはできないことに注意してください。

for o in list_of_four_o_mocks:
    o.mocked_method()
self.assertEqual(o.mocked_method.call_count, 4)

o毎回新しいオブジェクトなので。

于 2015-06-12T17:53:07.683 に答える
0

Adam Smith がすでにあなたの質問に答えているので、個人的なアドバイスにすぎません。私も、モックを作成し始めたときに、モック ライブラリを操作する際に多くの問題に直面しました。また、python-mock は pytest などの他のティーティング クライアントでは機能しません。そのため、fudge ライブラリを使用することをお勧めします。これはより Pythonic であり、すべてのテスト クライアントで動作します。

于 2015-06-12T20:22:10.263 に答える