如何将nosetests的输出重定向到文本文件?

时间:2012-03-01 16:11:34

标签: python nosetests

我尝试过“nosetests p1.py> text.txt”,但它无效。

管道此控制台输出的正确方法是什么?

3 个答案:

答案 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 - 不捕获标准输出