我怎么看的stdout运行Django的测试时?

问题描述 投票:37回答:4

当我运行./manage.py test测试,无论我发送到标准输出通过print不显示。如果测试失败,我看到每个失败的测试的“标准输出”块,所以我想Django的捕捉它(但不显示它时,测试通过)。

python django debugging testing stdout
4个回答
37
投票

TEST_RUNNER经过settings.py,它使用一个特定项目的亚军调用出来的鼻子。鼻有-s选项从捕获stdout阻止它,但如果我运行:

./manage.py test -s

manage.py第一捕获它并抛出一个“没有这样的选择”的错误。对于manage.py帮助并没有提到这一点,但我发现,如果我运行:

./manage.py test -- -s

它忽略了-s,让我捕捉到它的可定制的运行的身边,将它传递给鼻子没有问题。


37
投票

是啊,这个问题是由NoseTestSuiteRunner造成的。添加-- -s是棘手的,而不是最好的解决方案。尝试添加以下行的settings.py

NOSE_ARGS = ['--nocapture',
             '--nologcapture',]

这解决了我的问题。


4
投票

你可能有一些中间测试运行,如鼻子,拦蓄标准输出。尝试要么运行Django的直接检测,或写而不是标准错误。


4
投票

利用所有相关的软件包的当前版本(Django==1.11.2django-nose==1.4.5nose==1.3.7)就足以运行测试时添加--nocapture标志。因此,一个简单的

./manage.py test --nocapture

就足够了。

诚然当然,你有

TEST_RUNNER = "django_nose.NoseTestSuiteRunner"

settings.py

© www.soinside.com 2019 - 2024. All rights reserved.