我正在使用py.test来运行测试.我正在使用它与pytest-xdist并行运行测试.我想在我的测试中看到print语句的输出.
我有:Ubuntu 15.10,Python 2.7.10,pytest-2.9.1,pluggy-0.3.1.
这是我的测试文件:
def test_a():
print 'test_a'
def test_b():
print 'test_b'
Run Code Online (Sandbox Code Playgroud)
当我运行py.test时,没有打印任何内容.这是预期的:默认情况下,py.test捕获输出.
当我运行py.test -s时,它会打印test_a和test_b.
当我运行py.test -s -n2时,再没有打印任何内容.如何在使用-n2时使print语句正常工作?
我已经阅读了pytest + xdist而没有捕获输出和这个错误报告.
小智 9
我只是在 github https://github.com/pytest-dev/pytest/issues/1693 中看到了关于这个问题的解释
pytest-xdist 使用 sys stdin/stdout 来控制执行,显示打印输出的唯一方法应该是 std.err。
import sys
def test_a():
print >> sys.stderr, 'test_a'
def test_b():
print >> sys.stderr, 'test_b'
Run Code Online (Sandbox Code Playgroud)
不是一个好主意,但工作。
另外您应该注意,-s如果您使用 xdist 插件,则 arg没有用。
在python 3 中,我认为logging.warning是更好的选择,因为它默认设置为写入 stderr。
import logging
logging.basicConfig(format='%(message)s')
def test_a():
logging.warning('test_a')
def test_b():
logging.warning('test_b')
Run Code Online (Sandbox Code Playgroud)
要查看日志文件,请创建一个名为的文件pytest.ini并将以下内容添加到其中
log_cli = 1
log_cli_level = WARN
log_file = ./TestResults/test_log.log
log_file_level = WARN
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2088 次 |
| 最近记录: |