当尝试单元测试返回元组的方法并且我试图查看代码是否访问正确的元组索引时,python尝试评估预期的调用并将其转换为字符串.
call().methodA().__getitem__(0)最终被转换成'().methodA'
我的expected_calls列表中的断言.
提供的示例代码导致输出和回溯:
expected_calls=[call().methodA(), '().methodA']
result_calls=[call().methodA(), call().methodA().__getitem__(0)]
======================================================================
ERROR: test_methodB (badMockCalls.Test_UsingToBeMocked_methods)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\dev\workspace\TestCode\src\badMockCalls.py", line 43, in test_methodB
self.assertListEqual(expected_calls, self.result_calls)
File "C:\Python33\lib\unittest\case.py", line 844, in assertListEqual
self.assertSequenceEqual(list1, list2, msg, seq_type=list)
File "C:\Python33\lib\unittest\case.py", line 764, in assertSequenceEqual
if seq1 == seq2:
File "C:\Python33\lib\unittest\mock.py", line 1927, in __eq__
first, second = other
ValueError: too many values to unpack (expected 2)
----------------------------------------------------------------------
Ran 1 test in 0.006s
FAILED (errors=1)
Run Code Online (Sandbox Code Playgroud)
我如何判断methodB正在调用self.tbm.methodA()[0]?
示例代码(Python 3.3.2):
import …Run Code Online (Sandbox Code Playgroud)