以编程方式获取单元测试的结果

时间:2018-07-20 21:51:18

标签: python unit-testing

我编写了一些单元测试代码,这很棒,当我手动运行它时,可以在CLI上看到它。

现在,我想将其连接起来以作为合并到仓库中的主钩子的一部分自动运行。除了通过编程获取单元测试结果的部分之外,我已经用伪代码设置了所有内容。

当我调用unittest.main()来全部运行它们时,它将引发SystemExit。我尝试捕获它并重新路由该stdout,但我无法使其正常工作,而且感觉好像我做错了。有没有更简单的方法来获取单元测试的结果,例如在python字符串列表中,甚至是更复杂的结果对象?

出于我的目的,我只对100%通过或失败感兴趣,然后在向主请求的回购请求中显示该视觉效果,并带有指向完整的单元测试结果详细信息的链接。

如果可以调用其他一些python单元测试框架并轻松传递结果,我也不愿意参加unittest。

1 个答案:

答案 0 :(得分:1)

您可以将exit=False传递给unittest.main,并获取返回值。要从另一个脚本或交互式解释器运行它,也可以指定目标module

这为我们提供了一个已执行的TestCaseTestSuite类的实例。内部unittest机制将使TestResult对象在该对象的result属性中可用。

该对象将具有一个TestResult.wasSuccessful方法,该方法可以提供您想要的结果。

假设您有一些文件tests.py

from unittest import main

test = main(module='tests', exit=False)
print(test.result.wasSuccessful())