我有以下两次调用的函数
def func():
i=2
while i
call_me("abc")
i-=1
我需要测试这个函数是否被调用两次。在测试用例测试下面,如果它在给定的参数下全部/多次调用。
@patch('call_me')
def test_func(self,mock_call_me):
self.val="abc"
self.assertEqual(func(),None)
mock_call_me.assert_called_with(self.val)
我想写一个测试用例,其中" mock_call_me.assert_called_once_with(" abc")"引发一个断言错误,以便我可以显示它被调用两次。
我不知道是否有可能。任何人都可以告诉我该怎么做?
由于
答案 0 :(得分:12)
@patch('call_me')
def test_func(self,mock_call_me):
self.assertEqual(func(),None)
self.assertEqual(mock_call_me.call_count, 2)
答案 1 :(得分:2)
您甚至可以检查传递给每个调用的参数:
from mock import patch, call
@patch('call_me')
def test_func(self, mock_call_me):
self.val="abc"
self.assertEqual(func(),None)
mock_call_me.assert_has_calls([call(self.val), call(self.val)])
答案 2 :(得分:-1)
我知道如果你使用flexmock,你就可以这样写:
flexmock(call_me).should_receive('abc').once()
flexmock(call_me).should_receive('abc').twice()