【发布时间】:2017-02-01 19:57:32
【问题描述】:
我在处理 Mock.call_args_list 返回的嵌套元组时遇到了一些麻烦。
def test_foo(self):
def foo(fn):
fn('PASS and some other stuff')
f = Mock()
foo(f)
foo(f)
foo(f)
for call in f.call_args_list:
for args in call:
for arg in args:
self.assertTrue(arg.startswith('PASS'))
我想知道是否有更好的方法来解压缩模拟对象上的 call_args_list 以便做出我的断言。这个循环有效,但感觉必须有更直接的方法。
【问题讨论】:
-
我认为这真的取决于你想要做出什么样的断言。您是否尝试仅检查位置参数?您是否要检查位置和关键字参数?您是要检查关键字本身还是通过关键字参数传递的值?例如如果您只想检查第一个位置参数是否以
'PASS'开头,那么self.assertTrue(call[0][0].startswith('Pass'))应该可以在没有内部 2 个循环的情况下完成操作。
标签: python unit-testing python-unittest python-unittest.mock