着色Django测试的输出

时间:2011-10-19 01:08:43

标签: django

有没有办法让Django测试输出着色? 基本上是红色/绿色因子的结果是通过还是失败?

我使用Terminal.app在Mac OS X上。

7 个答案:

答案 0 :(得分:11)

redgreenunittests是最简单的解决方案,它适用于python 3.x

安装

pip install redgreenunittest

将下一行添加到 settings.py

TEST_RUNNER = "redgreenunittest.django.runner.RedGreenDiscoverRunner"

并且不要忘记享受:)

./manage test

答案 1 :(得分:6)

我发现pyrg能够很好地运作:

pyrg manage.py test

可以使用pip安装所需的命令:

pip install pyrg

答案 2 :(得分:4)

我知道这是一个老问题,但django-rainbowtests的目的是做到这一点。故障和错误是红色,成功是绿色的,它会在更大的堆栈跟踪中突出显示项目的代码。

答案 3 :(得分:3)

如果您已使用Fabric进行部署,则可以使用@codeinthehole's blog post中的此代码段:

from fabric.colors import _wrap_with

green_bg = _wrap_with('42')
red_bg = _wrap_with('41')

# Set the list of apps to test
env.test_apps = "app1 app2"

def test():
    with settings(warn_only=True):
        result = local('./manage.py test %(test_apps)s --settings=settings_test -v 2 --failfast' % env, capture=False)
    if result.failed:
        print red_bg("Some tests failed")
    else:
        print green_bg("All tests passed - have a banana!")

它不会对各个测试输出进行着色,但它确实可以让您立即获得红色/绿色......

答案 4 :(得分:2)

看看Print in terminal with colors using Python?。您应该可以从那里修改或推出自己的着色。

答案 5 :(得分:1)

我在pyrg中找到了一个名为question的可能解决方案。 不幸的是,没有像我预期的那样工作。

答案 6 :(得分:1)

如果您不使用Fabric,则可能需要redgreenunittest。基本上,您只需将其放在项目中的适当位置(可能在您的虚拟环境中),然后在您的设置中将其作为TEST_RUNNER引用,如下所示:

TEST_RUNNER="redgreenunittest.django.simple.RedGreenTestSuiteRunner"

如果您只使用Django的测试帮助程序代码(主要是django.test.TestCase),那么应该这样做。否则你可能需要直接引用redgreenunittest

import redgreenunittest as unittest

然后你就可以运行测试了。他们会有颜色。像魔术一样。