当我运行./manage.py test
测试,无论我发送到标准输出通过print
不显示。如果测试失败,我看到每个失败的测试的“标准输出”块,所以我想Django的捕捉它(但不显示它时,测试通过)。
在TEST_RUNNER
经过settings.py
,它使用一个特定项目的亚军调用出来的鼻子。鼻有-s
选项从捕获stdout
阻止它,但如果我运行:
./manage.py test -s
manage.py
第一捕获它并抛出一个“没有这样的选择”的错误。对于manage.py
帮助并没有提到这一点,但我发现,如果我运行:
./manage.py test -- -s
它忽略了-s
,让我捕捉到它的可定制的运行的身边,将它传递给鼻子没有问题。
是啊,这个问题是由NoseTestSuiteRunner
造成的。添加-- -s
是棘手的,而不是最好的解决方案。尝试添加以下行的settings.py
:
NOSE_ARGS = ['--nocapture',
'--nologcapture',]
这解决了我的问题。
你可能有一些中间测试运行,如鼻子,拦蓄标准输出。尝试要么运行Django的直接检测,或写而不是标准错误。
利用所有相关的软件包的当前版本(Django==1.11.2
,django-nose==1.4.5
和nose==1.3.7
)就足以运行测试时添加--nocapture
标志。因此,一个简单的
./manage.py test --nocapture
就足够了。
诚然当然,你有
TEST_RUNNER = "django_nose.NoseTestSuiteRunner"
在settings.py