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

新手上路,请多包涵

我有以下被调用两次的函数

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

我不知道这是否可能。谁能告诉我该怎么做?

谢谢

原文由 Ksc 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
2 个回答
@patch('call_me')
def test_func(self,mock_call_me):
  self.assertEqual(func(),None)
  self.assertEqual(mock_call_me.call_count, 2)

原文由 coldmind 发布,翻译遵循 CC BY-SA 3.0 许可协议

您甚至可以检查传递给每个调用的参数:

 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)])

原文由 Yaroslav Varkhol 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题