23

我正在使用 py.test 运行测试。我将它与 pytest-xdist 一起使用来并行运行测试。我想在我的测试中查看打印语句的输出。

我有: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'

当我运行py.test时,没有打印任何内容。这是预期的:默认情况下, py.test 捕获输出。

当我运行py.test -s时,它应该打印test_atest_b

当我运行py.test -s -n2时,又没有打印任何内容。使用-n2时如何使打印语句正常工作?

我已经阅读了 pytest + xdist 没有捕获输出和这个错误报告

4

1 回答 1

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'

不是一个好主意,但工作。

您还应该注意,-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')

要查看日志文件,请创建一个名为的文件pytest.ini并将以下内容添加到其中

log_cli = 1
log_cli_level = WARN
log_file = ./TestResults/test_log.log
log_file_level = WARN 
于 2017-09-08T07:33:19.373 回答