试图用Nose捕获详细的stdout输出

时间:2014-02-05 21:12:58

标签: python nose

在尝试为我的项目设置python unittest发现路径时遇到麻烦,我正在尝试用鼻子。我试图打印出详细的输出,据说默认是由Nose捕获的(根据http://nose.readthedocs.org/en/latest/plugins/capture.html

我有:

arg =sys.argv[:1]
arg.append('--verbosity=2')
out = nose.run(module=ft1.test_y1, argv=arg)

但是'out'是一个布尔值

我怎样才能让它发挥作用?

1 个答案:

答案 0 :(得分:1)

最好的办法是禁用插件并使用其他方法捕获标准输出,例如here所述:

import sys
import nose
from cStringIO import StringIO    

def basic_test():
    print "hello"

if __name__=="__main__":
    module_name = sys.modules[__name__].__file__

    old_stdout = sys.stdout
    sys.stdout = mystdout = StringIO()
    result = nose.run(argv=[sys.argv[0],
                            module_name,
                            '-s'])
    sys.stdout = old_stdout
    print mystdout.getvalue()

当像这样运行时,你会得到:

.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK
hello