我正在使用魔术模拟进行一些我正在进行的python测试。有一个功能
sendmail()
查看源代码的定义如下
def sendmail(sender,
addrs,
subject,
body,
format = 'plain',
cc = [],
bcc = [],
replyTo = [],
attach = [],
useOutlook = False,
force = False, ## UNUSED!
priority = None,
addStandardBobFooter = True
):
这一点并不重要。我希望我的测试做的是确认这是发送一个包含正确主题的电子邮件。所以我到目前为止所做的是......
sendmail = MagicMock()
self._fundingRollsPublisher.publish() #this function contains a call to sendmail()
在发布代码中,我们有
def publish():
#much more code
sendmail(mail_from, mail_to, subject, body, format = 'html')
对于迄今为止冗长的解释感到抱歉,但这是所有背景知识。我如何确认正在使用给定主题调用发送邮件功能...如果我想要主题是“紧急”,那么我想做一些事情的效果
sendmail.assert_called_with(subject= "URGENT")
当我尝试这个时,它似乎不起作用。任何人都知道一种方法,只关心其中一个变量?
答案 0 :(得分:0)
你可以做这样的事情
class MagicMock:
def __init__(self, *args, **kwargs):
self.args = args
self.kwargs = kwargs
def assert_subject(self, subject):
assert len(self.args) > 2 and self.args[2] == subject) or self.kwargs.get('subject', None) == subject, "Unexpected subject"