我使用unittest
(实际unittest2
)进行Python测试,使用Python Mock进行模拟对象,nose一次性运行所有测试。
我很想知道绿色/红色条纹一目了然是什么有效,有什么不对。有没有办法从unittest获得彩色输出?
(此时更改测试套件不是一个选项,我实际上更喜欢unittest)
答案 0 :(得分:24)
使用与robert's answer非常相似的方法,我(今天!)发布了一个包,可以在unittest
测试结果中启用颜色输出。我称之为colour-runner
。
要安装它,请运行:
pip install colour-runner
然后,在您使用unittest.TextTestRunner
的地方,请改用colour_runner.runner.ColourTextTestRunner
。
答案 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)
答案 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
免费获得颜色