测试在python中调用两次的函数

时间:2014-11-14 16:21:40

标签: python unit-testing python-3.x mocking

我有以下两次调用的函数

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")"引发一个断言错误,以便我可以显示它被调用两次。

我不知道是否有可能。任何人都可以告诉我该怎么做?

由于

3 个答案:

答案 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()

链接:http://has207.github.io/flexmock/