首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在使用pytest和xdist时打印输出

如何在使用pytest和xdist时打印输出
EN

Stack Overflow用户
提问于 2016-04-19 18:21:06
回答 1查看 7.8K关注 0票数 23

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

我有:Ubuntu15.10,Python2.7.10,pytest-2.9.1,pluy-0.3.1。

这是我的测试文件:

代码语言:javascript
复制
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错误报告了。

EN

回答 1

Stack Overflow用户

发布于 2017-09-08 07:33:19

我只是在github https://github.com/pytest-dev/pytest/issues/1693上看到了关于这个问题的解释。

pytest-xdist使用stdin/stdout来控制执行,显示打印出的唯一方法应该是std.err。

代码语言:javascript
复制
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。

代码语言:javascript
复制
import logging
logging.basicConfig(format='%(message)s')

def test_a():
    logging.warning('test_a')


def test_b():
    logging.warning('test_b')

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

代码语言:javascript
复制
log_cli = 1
log_cli_level = WARN
log_file = ./TestResults/test_log.log
log_file_level = WARN 
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36726461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档