【问题标题】:python doctest exception test handlingpython doctest 异常测试处理
【发布时间】:2011-08-30 15:27:16
【问题描述】:

我在一个名为 test2.txt 的文件中有以下内容。

>>> def faulty():  
... yield 5  
... return 7  
Traceback(most recent call last):  
SyntaxError: 'return' with argument inside generator(<doctest test.txt[0]>,line 3)  

我使用python -m test2.txt 调用测试运行。下面的结果完全出乎我的意料。

我的想法是测试应该成功,因为我已经在我的test2.txt 文件中写入了预期的输出,并且它“几乎”与我从控制台输出中得到的匹配。我尝试添加'File "G:\"'.... line?但测试仍然失败。

【问题讨论】:

    标签: python testing qa doctest


    【解决方案1】:

    doctest 对预期异常的格式非常小心。你错过了一个空格:

    Traceback(most recent call last): 应该是Traceback (most recent call last):

    此外,这仍然会失败,因为您的回溯消息过于具体(并且还有不正确的空格)!在 doctest 中使用 ELLIPSISIGNORE_EXCEPTION_DETAIL 标志,以使 doctest 对匹配异常不那么挑剔,如下所示:

    >>> def faulty(): # doctest: +IGNORE_EXCEPTION_DETAIL  
    ...     yield 5  
    ...     return 7  
    Traceback (most recent call last):  
    SyntaxError: 'return' with argument inside generator (...)
    

    ELLIPSIS 也可以在这里使用)

    【讨论】:

    • 非常感谢。我按照您的建议非常仔细地修改了初始文本文件,现在虽然我还没有尝试过您所说的标志,但它现在可以工作了。随着学习的深入,我可能会尝试一下。
    • 值得注意的是,这个标志也会导致异常消息被忽略。
    猜你喜欢
    • 2013-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-08
    • 1970-01-01
    • 2019-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多