使用

时间:2018-04-13 11:12:14

标签: python unit-testing magicmock

我有一个方法,它接受两个输入,一个电子邮件类和一个数据字典。

def send_email(data, email_client):
     **** various data checks and formatting *****
     response_code = email_client.create_email(recipient=receipient
                                               sender=sender
                                               etc...)

我正在尝试编写一个单元测试,它会根据输入数据使用正确的值调用email_client.create_email。

在我的测试文件中,我有

from emailer.email import send_email

class TestEmails(unittest.TestCase):

    def test_send_email(self):
        email.send_email(get_transactional_email_data, MagicMock())

我通常通过类似于:

的方式测试调用方法的内容
mock.assert_called_with(recipient=receipient
                       sender=sender
                       etc..)

然而,从这次起我正在测试通过课堂传授的内容(以及一个MagicMock),我不知道应该怎么做。

1 个答案:

答案 0 :(得分:1)

我认为你不需要MagicMock。只需先创建模拟

from emailer.email import send_email

class TestEmails(unittest.TestCase):

def test_send_email(self):
    myclient = Mock()
    mycreate = Mock()
    myclient.create_email = mycreate
    email.send_email(get_transactional_email_data, myclient)
    self.assertTrue(
        mycreate.called_with(sender='...')
    )