【发布时间】:2018-08-10 09:21:38
【问题描述】:
我有一个 python 模块,其中包含(以及其他函数)这段代码:
def check_color_range(*argv):
"""
Abbreviated documentation and other tests.
>>> check_color_range(23, -1, 99, 10000)
Traceback (most recent call last):
...
TypeError: Falscher Farbwert -1!
"""
for c in argv:
if c < 0 or c > 255:
raise TypeError('Falscher Farbwert ' + str(c) + '!')
当我像这样使用 doctest 运行它时:python -m doctest -v demo.py,我得到以下输出:
Trying:
check_color_range(23, -1, 99, 10000)
Expecting:
Traceback (most recent call last):
...
TypeError: Falscher Farbwert -1!
**********************************************************************
File "C:\az\code_camp_python\src\EigeneProgramme\Tag3\arcade_base\demo.py", line 5, in demo.check_color_range
Failed example:
check_color_range(23, -1, 99, 10000)
Expected:
Traceback (most recent call last):
...
TypeError: Falscher Farbwert -1!
Got:
Traceback (most recent call last):
File "C:\az\miniconda3\envs\py37\lib\doctest.py", line 1329, in __run
compileflags, 1), test.globs)
File "<doctest demo.check_color_range[0]>", line 1, in <module>
check_color_range(23, -1, 99, 10000)
File "C:\az\code_camp_python\src\EigeneProgramme\Tag3\arcade_base\demo.py", line 12, in check_color_range
raise TypeError('Falscher Farbwert ' + str(c) + '!')
TypeError: Falscher Farbwert -1!
1 items had no tests:
demo
**********************************************************************
1 items had failures:
1 of 1 in demo.check_color_range
1 tests in 2 items.
0 passed and 1 failed.
***Test Failed*** 1 failures.
对我来说,预期的错误和实际的错误看起来是一样的,但我可能会遗漏一些东西。我已经比较了空格等,似乎是一样的。
然后我尝试将“Got:”部分的完整 Traceback 粘贴到测试用例中 - 我仍然得到失败的测试,所以我想我一定是做错了什么。
如果你能给我一个提示,我会很高兴的。
【问题讨论】:
-
据我所知,您正在运行
check_color_range(23, -1, 99, 10000)。所以当然你会收到TypeError: Falscher Farbwert -1!的消息,因为你的第二个参数是-1。 -
是的,测试用例应该接受这个作为预期的异常。您可以看到 doctest 需要一个 Traceback,但指出实际的 Traceback 是不同的 - 我看不出它的不同之处。
-
在这种情况下,也许您应该共享调用
check_color_range方法的代码,因为听起来好像有问题。 -
好吧,我做到了。你有完整的模块代码(第一部分)和调用(“当我运行这个......”句子中的内联代码。
-
哦,我明白了。
标签: python python-3.x doctest