2016-12-06 4 views
1

단위 테스트를 설정하는 데 많은 어려움이 있습니다. 패치를 사용하고 있지만 예상대로 완전히 작동하지 않습니다. 나는 다음과 같은 주장을 할 때 @mock.patch('WarningFactory.WarningAPIUpdate') @mock.patch('WarningFactory.SomethingElse') def test_send_tc_update(self, other_mock, api_mock): assert_called_with가 전달되지 않는 이유는 무엇입니까?

그러나 내 함수의 끝에서 :

api_mock.send_warning.assert_called_with('IDQ20026', 'IDQ20026')

가 실패

나는 내 테스트 기능의 상단에 장식이

나는 달리기 때문에 통과해야한다는 것을 알고있다.

print api_mock.mock_calls

[call(u'test_api'), call().send_warning('IDQ20026', 'IDQ20026'), call().send_warning('IDQ24500', 'IDQ24500')]

나는 send_warning 방법을 명확하게 볼 수 있습니다 올바른 값으로 호출되는주기, 왜 내 주장은 실패?

+0

혹시 이것을 알아 냈습니까? [email protected] 같은 질문을 던졌을 때 – learningKnight

+0

답변이 추가되었습니다. – user3559247

답변

0

이제 문제는 assert_called_with가 가장 최근의 호출 만 검사한다는 것입니다.

assert_any_call (* 인수, ** kwargs로) ¶ 모의가 지정된 인수로 호출 된 주장한다.

모의 이제까지 호출 된 경우 어설가 만 호출이 가장 최근의 경우 전달하고 assert_called_once_with (의 경우 assert_called_with()와 assert_called_once_with()과는 달리, 통과) 그것은 또한해야합니다 유일한 전화. 그들은 assert_called_with 방법에 따라이 문제를 언급하지 않는 https://docs.python.org/3/library/unittest.mock.html

워드 프로세서부터

  • 좀 맛없어입니다.

    내 테스트를 위해 assert_any_call 메서드를 사용했다.