当我运行./manage.py test
的测试时,无论我通过print
发送到标准输出,都不显示。当测试失败时,我会在每次失败测试中看到一个“stdout”块,所以我猜Django会将其陷入陷阱(但在测试通过时不会显示它)。如何在运行Django测试时看到stdout?
回答
检查TEST_RUNNER
在settings.py
,它使用一个项目特定的跑步者呼叫鼻子。 鼻子有-s
选项从捕获stdout
阻止它,但如果我运行:
./manage.py test -s
manage.py
第一捕获它并抛出一个“没有这样的选择”的错误。为manage.py
帮助并没有提到这一点,但我发现,如果我跑:
./manage.py test -- -s
它忽略了-s
,让我捕捉到它的可定制的运行的身边,将它传递给鼻子没有问题。
因为我正在使用contrib.sites框架,所以我为我的测试指定了--settings。当我这样做时,-s标志函数按预期运行,并在另一个函数中传递 - 在-s抛出一个OSError(没有这样的文件)之前。 – ken 2011-12-19 18:21:55
只是为了记录。如果您在INSTALLED_APPS __after__ django_nose中安装了django_south,它不会让您给出鼻子选项(如-s)。你需要在INSTALLED_APPS中放置__before__ django_nose。这是我的问题 – yakxxx 2012-10-04 21:29:40
奇怪的是,这似乎对'print(...)'有效,但是使用'pprint打印输出。pprint(...)'不显示在控制台中。 – 2016-05-12 00:21:00
是的,这个问题是由NoseTestSuiteRunner
造成的。添加-- -s
是一个棘手但不是最好的解决方案。 尝试在settings.py
添加如下行:
NOSE_ARGS = ['--nocapture',
'--nologcapture',]
这解决了我的问题。
这是正确的答案。 ' - -s'方法引起不希望的副作用。 – adam 2014-09-23 17:47:50
使用当前版本的所有相关软件包(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
- 1. PyCharm Django的测试运行器无法看到django.sites(运行时错误)
- 2. Django测试数据库在测试运行时看起来为空
- 3. NoReverseMatch错误在Django运行测试时
- 4. 如何运行django测试用例?
- 5. 如何覆盖运行django-admin.py测试?
- 6. 在PyCharm中运行bash脚本时看到stdout
- 7. 如何测试stdin和stdout?
- 8. 如何在并行运行测试时管理测试数据
- 9. Django/unittest在测试运行结束时运行命令
- 10. Django停止运行测试
- 11. 如何在运行Test :: Unit测试时看到实际发生的情况?
- 12. 从maven运行测试时,如何查看IntelliJ IDEA“Test Runner Tab”?
- 13. 如何知道什么时候用django-nose运行测试
- 14. 如何在运行AB测试时使用Selenium处理测试?
- 15. 如何在Django中并行运行测试?
- 16. 如何在使用test_windmill进行Django时在风车中运行Javascript测试?
- 17. 当Jenkins运行测试时,无法看到硒测试正在浏览器上运行
- 18. 如何在运行rspec时将Rails.logger打印到控制台/ stdout?
- 19. 运行特定测试用例在Django
- 20. 在内存中运行Django MySQL测试
- 21. 如何同时运行NUnit测试?
- 22. Phoenix测试套件在运行测试时找不到列
- 23. 如何在测试时查看通知?
- 24. nosetests如何找到测试运行?
- 25. 如何仅在内存中运行Django的测试数据库?
- 26. 在运行django测试时在南迁移之前运行db语句
- 27. 如何从运行测试
- 28. 如何运行测试maven?
- 29. 如何运行测试
- 30. 如何在Python中运行unittest时临时隐藏stdout或stderr
加上'-s'选项 – 2013-02-27 00:01:39
你应该标记您自己的答案是正确的,因为它是。 – Catskul 2014-08-19 15:41:34