【问题标题】:Travis jobs reporting success, even though tests fail (using tox)Travis 作业报告成功,即使测试失败(使用 tox)
【发布时间】:2017-08-23 17:35:57
【问题描述】:

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

所有作业似乎都报告为成功,即使它们都有一个故意失败的测试,并且至少在过去 2 天里,同一项目的不同构建版本上都发生了这种情况。

我的.travis.yml 中的配置已经有一段时间没有显着变化,除了从“精确”切换到“可靠”——而且改回来似乎不能解决问题。

我的tox.ini 也有一段时间没有更改了。

我已经尝试强制 tox 到较早的版本,但这似乎没有帮助。

我知道这一定与 tox 或 Travis 有关,但我的知识就到此为止了。任何帮助都将不胜感激。

【问题讨论】:

    标签: python testing travis-ci tox


    【解决方案1】:

    我查看了该项目,这与 tox 或 travis 无关。问题是在 tox 中使用的runtests.py 总是以退出代码 0 返回,无论发生什么。 Tox(以及 Travis 的扩展)需要一个退出代码!= 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())
    

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-24
    • 2018-08-30
    • 1970-01-01
    • 2018-03-04
    • 1970-01-01
    • 2019-04-11
    • 1970-01-01
    • 2017-06-02
    相关资源
    最近更新 更多