【问题标题】:Python 3/Doctest: Exception is not evaluated as expected resultPython 3/Doctest:异常未按预期结果评估
【发布时间】: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


【解决方案1】:

在第 8 行,您有:TypeError: Falscher Farbwert -1!____(末尾有 4 个空格)

您应该将其替换为:TypeError: Falscher Farbwert -1!

【讨论】:

  • 感谢您发现这一点!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-20
  • 1970-01-01
  • 2015-09-03
  • 2017-11-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多