1

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

@mock.patch('apps.dbank.management.commands.optin_invites.OptinBase.sendEmails')
def test_x_send_emails(self, send_emails_mock):
   oi = OptinInvitesX()
   oi.compute(True, "test@test.com")
   self.assertTrue(send_emails_mock.assert_called_with(???, test_email_address="test@test.com"))

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

4

1 に答える 1

0

あなたはの基本的な使い方を説明していますmock.ANY

場合によっては、mock の呼び出しでいくつかの引数についてアサーションを作成する必要があるかもしれませんが、いくつかの引数を気にしないか、それらを個別に引き出してcall_argsより複雑なアサーションを作成したい場合があります。

特定の引数を無視するには、すべてに等しいオブジェクトを渡すことができます。assert_called_with()andの呼び出しassert_called_once_with()は、渡されたものに関係なく成功します。

したがって、あなたの場合、次を使用できます。

# only asserting on 'test_email_address' argument:
send_emails_mock.assert_called_with(mock.ANY, test_email_address="test@test.com")

その行で実際に使用したくないことに注意してくださいself.assertTrue。モック メソッドは独自のアサーションです。

于 2014-10-27T17:16:04.107 に答える