我使用py.test运行测试。我使用它与pytest-xdist并行运行测试。我想在我的测试中看到打印语句的输出。
我有:Ubuntu15.10,Python2.7.10,pytest-2.9.1,pluy-0.3.1。
这是我的测试文件:
def test_a():
print 'test_a'
def test_b():
print 'test_b'当我运行py.test时,什么都不打印。这是预期的:默认情况下,py.test捕获输出。
当我运行py.test -s时,它会打印test_a和test_b。
当我运行py.test -s -n2时,也不会打印任何内容。如何在使用-n2时使打印语句工作
我已经读过未捕获输出的pytest + xdist和错误报告了。
发布于 2017-09-08 07:33:19
我只是在github https://github.com/pytest-dev/pytest/issues/1693上看到了关于这个问题的解释。
pytest-xdist使用stdin/stdout来控制执行,显示打印出的唯一方法应该是std.err。
import sys
def test_a():
print >> sys.stderr, 'test_a'
def test_b():
print >> sys.stderr, 'test_b'不是个好主意,而是工作。
另外,您应该注意,如果使用xdist插件,arg -s没有任何用处。
在python 3中,我认为logging.warning是一个更好的选择,因为默认情况下,它被设置为将stderr写为stderr。
import logging
logging.basicConfig(format='%(message)s')
def test_a():
logging.warning('test_a')
def test_b():
logging.warning('test_b')若要查看日志文件,请创建一个名为pytest.ini的文件,并将以下内容添加到其中
log_cli = 1
log_cli_level = WARN
log_file = ./TestResults/test_log.log
log_file_level = WARN https://stackoverflow.com/questions/36726461
复制相似问题