doctest 预期无返回
我对这个doctest的问题感到困惑。
from collections import namedtuple
Match = namedtuple('Match', ['token_string', 'normalised_token',
'brand_name', 'brand_id',
'score'])
def make_match(tokens, normalised, brand, score):
"""
Examples:
>>> make_match('Jack Jones','JackJones',('Jack Jones','X023'),0.6)==Match('Jack Jones','JackJones','Jack Jones','X023',0.6)
>>> True
>>> make_match('Jack Jones','JackJones',('Jack Jones','X023'),0.6)==('Jack Jones','JackJones','Jack Jones','X023',0.6)
>>> True
"""
return Match(token_string=tokens,
normalised_token=normalised,
brand_name=brand[0],
brand_id=brand[1],
score=score)
然后我遇到了这样的测试失败:
Failed example:
make_match('Jack Jones','JackJones',('Jack Jones','X023'),0.6)==Match('Jack Jones','JackJones','Jack Jones','X023',0.6)
Expected nothing
Got:
True
**********************************************************************
File "utilization.py", line 15, in utilization.make_match
Failed example:
True
Expected nothing
Got:
True
**********************************************************************
1 items had failures:
4 of 4 in utilization.make_match
***Test Failed*** 4 failures.
这真奇怪。我不是已经声明要期待“True”了吗?
非常感谢你。
1 个回答
6
你的测试用例格式不对,跟你在解释器里看到的格式不一致。比如,应该不是这样:
>>> make_match('Jack Jones','JackJones',('Jack Jones','X023'),0.6)==Match('Jack Jones','JackJones','Jack Jones','X023',0.6)
>>> True
而是应该这样:
>>> make_match('Jack Jones','JackJones',('Jack Jones','X023'),0.6)==Match('Jack Jones','JackJones','Jack Jones','X023',0.6)
True
注意,输出部分没有出现>>>
。这也是为什么你看到四个测试,而不是你预期的两个;True
被当成了一个新的测试,而不是上一个测试的预期结果。