在python中,为什么mock_calls在调试模式下运行时调用.__ str __()调用的次数不一致?

时间:2017-08-09 17:11:56

标签: python unit-testing mocking

我创建了一个python测试,我正在模拟日志记录功能。然后我测试以确保loccking_mock.mock_calls的数量是我的预期。

我正在使用pycharm。当我运行代码时,测试通过了,但是当我调试它时(在我的assert语句的行中有一个断点),它没有通过,而logging_mock.mock_calls包含很多意外的调用.__ str __()调用。列出的呼叫.__ str __()呼叫次数每次都有所不同。

在调试过程中,我注释了main方法中的所有功能,但我仍然遇到了这个问题。这是仍然给我这个问题的代码:

@mock.patch('app.helpers.logging')
def test_main(self, logging_mock):
    """
    Test the main method
    """
    main()

    self.assertEqual(0, len(logging_mock.mock_calls))

这是我的空主:

def main():
    pass

当我在调试器中运行时,为什么会有不同数量的调用.__ str __()调用?

1 个答案:

答案 0 :(得分:1)

对您来说可能为时已晚,但对于在这里绊脚的其他人而言。调试器中的某些内容正在您的应用程序的日志记录对象中调用字符串,该字符串已被模拟记录为call()。 str ()。我还看到了忘记忘记在模拟上正确设置return_value并记录了模拟调用的输出的地方。