我尝试过“nosetests p1.py> text.txt”,但它无效。
管道此控制台输出的正确方法是什么?
答案 0 :(得分:18)
尝试:
nosetests -s p1.py > text.txt 2>&1
最后 - 显然 - 提示:如果您不在测试文件目录中,请在.py文件之前添加。
答案 1 :(得分:2)
我想在这里添加更多细节。
在我的版本(v1.3.7)上,鼻子正在登录stderr
,而不是预期的stdout
。为什么鼻子不是登录stderr
而是登录stdout
。因此,解决方案是将stderr
流重定向到您的文件。重定向字符默认发送stdout
。 --nocapture, -s
标志用于阻止鼻子捕获您自己的print
语句。
$ nosetests -s -v test/ > stdout.log 2> stderr.log
要注意的一件事是,尽管stderr
似乎在每个输出上都被刷新了,但是stdout
并没有被刷新,因此如果您tail
正在stdout.log
文件,直到鼻子或操作系统决定冲洗时,您才会看到输出。因此,如果您认为它不起作用,请尝试退出测试运行程序,这将导致stdout
刷新。
有关重定向linux streams的信息,请参见此答案。
答案 2 :(得分:1)
参数-s
- 不捕获标准输出