2013-11-27 3 views
2

제가하고있는 파이썬 테스트에 마법의 모의를 사용하고 있습니다. 소스 코드를보고하는 기능 파이썬에서의 조롱 행위, 매개 변수 중 하나만주의하십시오.

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

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" 
같은 뭔가를 할 수
관련 문제