在运行Django测试时,我如何查看标准输出(stdout)?
问题出现的原因:在运行Django测试时,希望能够看到标准输出(stdout),但是默认情况下Django会捕获stdout,导致无法直接查看输出。
解决方法:根据经验分享的内容,可以采用以下两种方法解决该问题:
1. 使用-s
选项:在settings.py
中检查TEST_RUNNER
,如果使用的是一个特定于项目的runner(如Nose),则可以在运行测试时添加-s
选项,例如:./manage.py test -s
。但是,有些情况下(如在manage.py
中),会先被捕获并抛出“no such option”错误。此时可以尝试使用--
来忽略-s
选项,例如:./manage.py test -- -s
。
2. 修改应用顺序:如果在INSTALLED_APPS
中安装了django_south和django_nose,并且django_nose在django_south后面,可能会导致无法给nose传递选项(如-s
)。解决方法是将django_south放在django_nose之前,即将south before django_nose放入INSTALLED_APPS
中。
其他解决方法的尝试:还有一些其他的解决方法也被提到,但是并不是所有人都适用,例如使用print(...)
可以正常显示输出,但使用pprint.pprint(...)
却无法在控制台中显示输出。还有一些人尝试了其他的命令行参数,如./manage.py test --
。
通过以上的经验分享,我们可以了解到在运行Django测试时,如果希望看到stdout输出,可以尝试使用-s
选项或修改应用顺序来解决该问题。