我是MagicMock在python中进行单元测试的新手。我有以下代码来断言python中正确的方法计数:
def methodFoo(self):
for booObject in self.booObjectList:
booObject.shooMethod()
我希望在单元测试代码中执行方法shooMethod()
的断言调用计数,以查看booObjectList
中的N个对象是否执行N次调用。以上功能不是我的单元测试代码。这是一种通过在我的单元测试类中创建新方法test_methodFoo()
来进行测试的方法。我该怎么办呢?谢谢你的帮助。
答案 0 :(得分:1)
Mock
个对象有一个属性called
,用于跟踪是否已调用Mock,以及一个属性call_count
,用于跟踪调用它们的次数。
def test_methodFoo(self):
self.object_under_test.methodFoo()
self.assertTrue(all([booObject.shooMethod.called for
booObject in self.object_under_test.booObjectList]))
但请注意,您无法执行以下操作:
for o in list_of_four_o_mocks:
o.mocked_method()
self.assertEqual(o.mocked_method.call_count, 4)
因为o
每次都是一个新对象。
答案 1 :(得分:0)
正如亚当·斯密已经回答了你的问题,只是一个个人建议 - 当我开始做模拟时,我也面临着很多与模拟库一起工作的问题。除了python-mock不适用于其他teating客户端如pytest等。所以我建议你使用fudge库。它更加pythonic,适用于所有测试客户。