显示python unittest结果以漂亮的表格形式显示

时间:2013-06-18 07:12:28

标签: python unit-testing testing python-unittest test-reporting

我正在编写一个Pythonic工具,用于验证某个系统的正确性。每个验证都写为Python unittest,报告如下:

test_exclude_list_not_empty (__main__.TestRepoLists)
Assert the the exclude list is not empty ... ok
test_include_list_not_empty (__main__.TestRepoLists)
Assert the the include list is not empty ... ok
test_repo_list_not_empty (__main__.TestRepoLists)
Assert the the repo list is not empty ... ok

在我看来,这种格式很难阅读,特别是对于非Python主义者。是否有任何报告生成器可以以漂亮的表格形式生成报告,例如:

+----------------------------------------------------------------+-----------+
| Test                                                           |  Status   |
+----------------------------------------------------------------+-----------+
| Assert the the exclude list is not empty                       |  OK       |
| Assert the the include list is not empty                       |  OK       |
| Assert the the repo list is not empty                          |  OK       |
| All the items in the include list should be in the repo list   |  OK       |
+----------------------------------------------------------------+-----------+

澄清测试套件在远程终端上运行,所以我更喜欢命令行报告工具。

3 个答案:

答案 0 :(得分:29)

这不完全是您所要求的,但有几种方法可以在那里获得可读的测试输出:

  • HTMLTestRunner以表格形式生成易于使用的HTML测试报告。 Here是一份示例报告。
  • nose-html-output nose test runner
  • 插件
  • unittest-xml-reporting - 基于PyUnit的测试运行器,带有JUnit,如XML报告
  • --with-xunit选项的鼻子将生成易于阅读和转换的junit xml样式报告

另见:

如果您想在控制台中以表格形式查看测试结果,我认为最好根据unittest.TestProgram编写own nose plugin或测试运行器,因为它是在HTMLTestRunner

希望有所帮助。

答案 1 :(得分:11)

我想将我的信息添加为对alecxe答案的评论,但我没有足够的声誉。

如果有人仍然在寻找答案,我会将HTMLTestRunner分成一个简单的TestRunner,它有一个表格,彩色,终端友好的输出。 这是其输出的一个示例:

Example

源代码位于https://gist.github.com/viniciusd/73e6eccd39dea5e714b1464e3c47e067

我将很快从头开始重写它,但保留输出格式。

答案 2 :(得分:4)

看看Twisted's Trial

默认情况下,它使用TreeReporter测试运行器,如下所示:

Trial's reporting

它具有以下内容:

  • 这是一个命令行报告,只需运行:

    trial test_name.py

  • 彩色输出:红色表示失败,绿色表示成功

  • 报告使用树状结构。它显示它们所属的TestCases下的测试,允许您快速遍历结果以查找特定测试。 (虽然它提供了几个reports)。

  • 它还包含一个源自Python unittest.TestCase的测试库。您可以通过继承twisted.trial.unittest.TestCase来使用此库。这提供了更多assertion methods

  • 它包括为测试生成语句覆盖率的选项。