python - 如何使用方法 MagicMock 对象列表并获取断言计数

标签 python python-unittest magicmock

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

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

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

最佳答案

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

关于python - 如何使用方法 MagicMock 对象列表并获取断言计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30809038/

相关文章:

python - 我想随机选择,但要为其值赋予权重

python unittest : mocking a dict-like object

python - 如何使用全局参数跳过 python unittest

python - 模拟类的补丁属性

python - 如何让MagicMock返回多个值

python - Unittest.mock - 如何模拟从连接对象对 cursor.execute() 的调用?

使用 from package import module 语法时 Python 循环导入失败

python - Plotly:如何处理金融时间序列的缺失日期?

python - 使用类作为装饰器时,为什么 'self' 不在 args 中?

Python Unittest 抛出未捕获的 TypeError : __init__() takes 1 positional argument but 2 were given