1

我是使用 MagicMock 在 python 中进行单元测试的新手。我有以下代码在 python 中断言正确的方法计数:

 def methodFoo(self):
       for booObject in self.booObjectList:
            booObject.shooMethod()

我希望shooMethod()在我的单元测试代码中执行该方法的断言调用计数,以查看其中的 N 个对象booObjectList是否执行 N 次调用。上面的函数不是我的单元测试代码。test_methodFoo()这是一种通过在我的单元测试类中创建新方法来测试的方法。我该怎么做?谢谢你的帮助。

4

2 回答 2

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每次都是一个新对象。

于 2015-06-12T17:53:07.683 回答
0

正如亚当斯密已经回答了你的问题,这只是一个个人建议——当我开始做模拟时,我也遇到了很多使用模拟库的问题。此外 python-mock 不适用于 pytest 等其他测试客户端。所以我建议你使用 fudge 库。它更 Pythonic 并且适用于所有测试客户端。

于 2015-06-12T20:22:10.263 回答