当前位置: 首页 > 知识库问答 >
问题:

如何将pytest与xdist一起使用时打印输出

谭嘉歆
2023-03-14

我用的是py。测试以运行测试。我将它与pytest xdist一起使用以并行运行测试。我想在测试中看到print语句的输出。

我有:Ubuntu 15.10,Python 2.7.10,pytest-2.9.1,plugy-0.3.1。

这是我的测试文件:

def test_a():
    print 'test_a'


def test_b():
    print 'test_b'

当我跑步的时候。测试时,没有打印任何内容。这是预期的:默认情况下,py。测试捕获输出。

当我跑步的时候。test-s,它会打印test_a和test_b。

当我跑步的时候。测试-s-n2,同样不打印任何内容。使用-n2时,如何使print语句正常工作?

我已经阅读了pytest xdist,但没有捕获输出和此错误报告。

共有1个答案

龚同
2023-03-14

我只是在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'

不是个好主意,但工作。

另外,你应该注意,如果你使用xdist插件,arg-s没有用。

在Python3中,我认为是日志记录。警告是一个更好的选择,因为默认情况下它被设置为写入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 
 类似资料:
  • 问题内容: pytest建议添加一个附加目录来分隔项目中的源代码: 可悲的是,他们在这种情况下对测试代码中的导入应该如何工作一无所获[1],在这个幼稚的示例[2]中,这对于我的IDE来说是很好的,但pytest导致以下错误: 我可以通过将测试的导入更改为来解决此问题,但随后我的IDE投诉该部分多余,因此我想将其保留。 [1] :情况不再如此。从3.7.3版本开始,pytest建议在@hoeflin

  • 我试图使用TDD(测试驱动开发)与。当我使用时,不会到控制台。 我正在使用来运行它。 似乎说默认情况下它应该工作:http://pytest.org/latest/capture.html 但是: 没有任何东西被打印到我的标准输出控制台(只是正常的进度和多少测试通过/失败)。 我正在测试的脚本包含打印: 在模块中,默认情况下打印所有内容,这正是我所需要的。但是,出于其他原因,我希望使用。 有人知道

  • 我在Ubuntu 14.04中安装了phpbrew以使用PHP5.4。它工作得很好,但当我尝试使用composer时除外,composer会忽略phpbrew并安装与PHP5.5相关的依赖项。 有没有办法强制composer与phpbrew config兼容?我试图在我的作曲家中添加:php:“5.4”。json,但是它说这个要求在我的php版本中是不可能的。

  • 我是Micronaut框架的新手,我正在尝试使用entitymanager创建我的存储库。我这样创建了我的存储库 我使用这个类实现接口并注入entitymanager 问题是我一直有这个错误: PS:我已经启用了注释处理

  • 我正在尝试将composer与我的WampServer一起使用。 我所有文件的路径都是,但当我运行composer时,它会将供应商文件和其他东西安装到其他地方。 我甚至不知道我的项目在哪里,我也不能改变我的项目在哪里的路径。我已经尝试了所有的方法,但它似乎仍然没有在我的项目文件夹中安装供应商文件。

  • API level 28和Google建议使用registerNetworkCallback(NetworkRequest,PendingIntent)不推荐CONNECTIVITY\u操作。 我尝试使用ConnectionManager注册了registerNetworkCallback。NetworkCallback和它的工作,但我想使用PendingContent。 让我困惑的是公共空寄存器