Travis工作报告成功,即使测试失败(使用tox)

时间:2017-08-23 17:35:57

标签: python testing travis-ci tox

我正在专门研究以下构建:
https://travis-ci.org/ababic/wagtailmenus/builds/267670218

所有工作似乎都报告成功,即使他们都有一个故意测试失败的测试,并且至少在过去的两天内,这个工作已经在同一个项目的不同版本中发生。

我的.travis.yml中的配置在一段时间内没有发生重大变化,除了从'精确'切换到'可靠' - 并且改变它似乎不能解决问题。

我的tox.ini暂时没有改变。

我尝试将tox强制转换为早期版本,这似乎没什么帮助。

我知道它必须与tox或Travis有关,但这就是我的知识结束的地方。任何帮助都将非常感激。

1 个答案:

答案 0 :(得分:3)

我看过这个项目,这与tox或travis无关。问题是tox中使用的runtests.py总是以exitcode 0返回,无论发生什么。 Tox(和扩展Travis)需要一个exitcode!= 0才能知道出了什么问题。

runtests.py中的相关代码:

[...]

def runtests():
    [...]
    try:
        execute_from_command_line(argv)
    except:
        pass

if __name__ == '__main__':
    runtests()

我没有检查执行execute_from_command_line的确切行为,但我认为如果出现问题则会返回错误代码(或者如果某些内容真的错误则会引发异常)。

因此我会像这样重写上面的代码:

import sys
[...]

def runtests():
    [...]
    return execute_from_command_line(argv)

if __name__ == '__main__':
    sys.exit(runtests())

通过这种方式,您可以通过您运行的任何函数来报告测试结果,并将其作为错误代码退出脚本,或者如果引发异常,则会打印回溯并且脚本也返回非零代码。