unittest彩色输出

时间:2011-03-05 11:53:09

标签: python unit-testing

我使用unittest(实际unittest2)进行Python测试,使用Python Mock进行模拟对象,nose一次性运行所有测试。

我很想知道绿色/红色条纹一目了然是什么有效,有什么不对。有没有办法从unittest获得彩色输出?

(此时更改测试套件不是一个选项,我实际上更喜欢unittest)

9 个答案:

答案 0 :(得分:24)

使用与robert's answer非常相似的方法,我(今天!)发布了一个包,可以在unittest测试结果中启用颜色输出。我称之为colour-runner

要安装它,请运行:

pip install colour-runner

然后,在您使用unittest.TextTestRunner的地方,请改用colour_runner.runner.ColourTextTestRunner

请参阅how it looks with verbosity=1 ...和verbosity=2

答案 1 :(得分:19)

我在测试和rednose方面取得了很大的成功。在撰写本文时,它仍然保持着。

答案 2 :(得分:13)

在python 2.x中,您可以尝试pyrg。但是在Python 3中不起作用。

答案 3 :(得分:9)

创建一个继承自unittest.TestResult(例如,MyResults)的类,并实现一堆方法。然后创建一个继承自unittest.TextTestRunner(例如MyRunner)并覆盖_makeResult()的类,以返回MyResults的实例。

然后,构建一个测试套件(您可能已经开始工作),然后调用MyRunner().run(suite)

您可以将您喜欢的任何行为(包括颜色)放入MyResults

答案 4 :(得分:7)

pytest可以做到这一点,而无需进行单元测试。

enter image description here

现在安装pytest。

pip install --user pytest

运行测试以查看颜色!

enter image description here

答案 5 :(得分:2)

我还找到了另一个针对鼻子的着色插件:https://pypi.python.org/pypi/yanc

的YANC

使用Python 3.5和鼻子1.3.7为我工作(我无法获得上面列出的鼻子的任何其他选项)

答案 6 :(得分:1)

尝试rudolf插件进行鼻子测试。

答案 7 :(得分:1)

如果您只能更改测试导入的行,则可以使用redgreenunittest。这是我用unittest制作的克隆,但它有输出的颜色。

如果您想在不更新任何代码的情况下使用它,您可以像这样使用它:

import redgreenunittest as unittest

它不是unittest2的克隆,所以它不会与Andrea的代码一起开箱即用,但它的来源就在那里,所以unittest2 redgreenunittest的{​​{1}}分叉不可能。

此外,任何“你做错了”的评论都是受欢迎的,只要它们包含一些推理。我喜欢这样做。

答案 8 :(得分:-1)

如果您以这种方式运行pytest:

python -m unittest test_my.py

将其更改为:

pytest test_my.py

免费获得颜色