首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文档测试失败,没有退出代码

文档测试失败,没有退出代码
EN

Stack Overflow用户
提问于 2013-09-13 09:22:42
回答 2查看 814关注 0票数 11

在我的测试代码中,我的doctest失败了,但是脚本以零返回值退出,这会导致CI运行通过,而这不是有意的。

这是doctest模块的正确行为吗?

我的剧本结尾是:

代码语言:javascript
复制
if __name__ == '__main__':
    import doctest
    doctest.testmod()

输出如下:

代码语言:javascript
复制
**********************************************************************
File "test/test.py", line 7, in __main__
Failed example:
    f(1,0)
Expected:
    -----
    type: <type 'exceptions.ZeroDivisionError'>
    value: integer division or modulo by zero
    x
    -----
Got:
    -----
    type: <type 'exceptions.ZeroDivisionError'>
    value: integer division or modulo by zero
    -----
**********************************************************************
1 items had failures:
   1 of   1 in __main__
***Test Failed*** 1 failures.
tux@iPad:~/programming/exception-notifier(fix-travis)(0)$ echo $?
0
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-13 10:01:47

我发现使用doctest.testmod(raise_on_error=True)会在测试失败时引发异常,这将导致脚本以非零代码退出。

这里的Python文档

可选参数raise_on_error默认为false。如果为真,则在示例中的第一次失败或意外异常时引发异常。这允许在死后调试失败。默认行为是继续运行示例。

票数 5
EN

Stack Overflow用户

发布于 2014-09-05 18:37:29

@fossilet的答案适用于正确破坏测试失败的构建,但在doctest能够将任何内容写入控制台之前就会引发异常。这使得您的日志对于识别问题没有多大用处。

另一种选择是打电话

代码语言:javascript
复制
sys.exit(doctest.testmod()[0])

这使得进程退出代码等于失败的测试数。您的CI工具应该将非零退出代码解释为失败的构建。但是doctest输出仍然可以到达控制台。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18782721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档