2011-10-19 30 views
12

有没有方法给Django测试输出着色? 基本上红色/绿色的因素通过或失败的结果?着色Django测试的输出

我在Mac OS X上使用Terminal.app

回答

3

如果您已经使用了部署光纤,就可以使用这个片段来自@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!") 

它不colorise个别测试输出,但它确实给你直接的红/绿满意...

2

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

+0

还有就是一个包,这是否很容易被称为彩色光(HTTP://pypi.python。org/pypi/colorama) –

1

我在question中发现了一个可能的解决方案,名为pyrg。 不幸的是,没有按预期为我工作。

6

我发现pyrg工作得很好:

pyrg manage.py test 

所需的命令可以用PIP安装:

pip install pyrg 
+1

愧这不适用于python 3':/' – meshy

0

如果你不使用布,你可能会喜欢redgreenunittest。基本上,你只要把它放在适当的位置在您的项目(在虚拟环境中可能),然后引用它如您在设置您的TEST_RUNNER这样的:

TEST_RUNNER="redgreenunittest.django.simple.RedGreenTestSuiteRunner" 

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

import redgreenunittest as unittest 

然后你只需运行测试。他们会有颜色。像魔术一样。

4

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

6

redgreenunittests是最简单的解决方案,它的伟大工程与Python 3.x的

安装它

pip install redgreenunittest

在下一行添加到settings.py

TEST_RUNNER = "redgreenunittest.django.runner.RedGreenDiscoverRunner"

别忘了t Ø享受:)

./manage test

+0

其实这个软件包是redgreenunittest(即使git repo有一个“s”),所以你需要运行'pip install redgreenunittest '。 –