在运行Django测试时,我如何看到stdout?

2024-03-29 14:57:49 发布

您现在位置:Python中文网/ 问答频道 /正文

当我使用./manage.py test运行测试时,通过print发送到标准输出的任何内容都不会显示。当测试失败时,我看到每个失败的测试都有一个“stdout”块,所以我猜Django会捕获它(但在测试通过时不会显示它)。


Tags: djangopytest内容标准managestdout测试通过
3条回答

使用所有相关包(Django==1.11.2django-nose==1.4.5nose==1.3.7)的当前版本,在运行测试时添加--nocapture标志就足够了。如此简单

./manage.py test --nocapture

就够了。

当然你有

TEST_RUNNER = "django_nose.NoseTestSuiteRunner"

在你的settings.py

是的,这个问题是由NoseTestSuiteRunner引起的。添加-- -s很棘手,不是最佳解决方案。 尝试在settings.py中添加以下行:

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

这解决了我的问题。

选中了TEST_RUNNERsettings.py中,它使用了一个调用Nose的项目特定的运行器。Nose有-s选项来阻止它捕获stdout,但是如果我运行:

./manage.py test -s

manage.py首先捕获它并抛出一个“no such option”错误。关于manage.py的帮助没有提到这一点,但是我发现如果运行:

./manage.py test -- -s

它忽略了-s并让我在自定义跑步者一侧捕获它,将它毫无问题地传递给Nose。

相关问题 更多 >