2017-11-30 41 views
0

내가 의도 한 assert_called_with를 이해하려고 시도했지만 내가 작성한 코드에서 오류가 발생합니다.python mock assert_called_with

import unittest 
from mock import Mock 
import test 

class TweetTest(unittest.TestCase): 
    def test_example(self): 
     mock_twitter = Mock()   
     test.tweet(mock_twitter,'msg')   
     mock_twitter.PostUpdate.assert_called_with('message')   

if __name__ == '__main__': 
    unittest.main() 

유닛 테스트

import os 
import twitter 

URL = "http://test.com" 

def tweet(api, message): 
    if len(message) > 40: 
     message = message.strip("?.,.,.") 

    status = api.PostUpdate(message) 
    return status 

def main(): 
    api = twitter.Api(consumer_key='' 
        ,consumer_secret='') 
    msg = 'This is test message' 
    tweet(api, msg) 

if __name__ == '__main__': 
    main() 

내가 여기에 무엇을 assert_called_with 이해하려고 노력 중이 야?

+0

그 테스트는 당신을 위해 가치가있다. api.PostUpdate가 'message'와 함께 호출되지 않으면 실패합니다. 코드에 따라 매번 실패합니다. 더 나은 테스트는 트위터 API 테스트 자격 증명을 조회하고 실제로 외부 API에 도달하는 것입니다. – Dan

답변

0

파이썬 문서 https://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock.assert_called_with

그래서 매개 변수가 사용되는 여부를 테스트 '이 방법은 호출이 특정한 방식으로 만들어진 것을 주장하는 편리한 방법입니다'에 따르면, 올바른 방식으로

받고있는 오류에 대해서는 전달한 매개 변수가 잘못되었다고 생각합니다. 그 같은 있어야합니다 :

mock_twitter.PostUpdate.assert_called_with(message='msg')