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

更改一个测试的pytest捕获

郑俊弼
2023-03-14

是否有可能仅在一个测试中更改pytest中的捕获行为-

我有一堆测试,我用pytest。在一些测试中,我喜欢打印几个有用的量,所以我使用-s标志在pytest输出中显示它们。但是我也测试警告,警告也会打印出来,看起来很难看,很分散注意力。我试着像往常一样使用warnings.simplefilter来不显示警告,但这似乎没有任何作用。(也许pytest破解它???)无论如何,我想要一些方法来平息警告,但仍然检查它们是否被提出,同时还能看到从我的其他打印语句中捕获的输出。有什么方法可以做到这一点-

共有2个答案

简景焕
2023-03-14

我是通过手动重定向stderr来完成的:

import os
import sys
import warnings
import pytest

def test():
    stderr = sys.stderr
    sys.stderr = open(os.devnull, 'w')
    with pytest.warns(UserWarning):
        warnings.warn("Warning!", UserWarning)
    sys.stderr = stderr

如果不需要其他print语句,我可以类似地将stdout重定向到devnull。

陈铭晨
2023-03-14

在pytest 3. x中,有一个简单的方法可以暂时禁用捕获(参见关于capsys.disabled()的部分。

还有一个pytestwarnings插件,它在一个专用的报告部分显示警告。

 类似资料:
  • 在unittest中,我可以在一个类中设置变量,然后这个类的方法可以选择它想要使用的任何变量... 所以在unittest中,很容易将一组测试放在一起,这些测试可以放在一个类下,然后为不同的方法使用许多不同的变量(varA和varB)。在pytest中,我在conftest.py中创建了一个fixture,而不是在unittest中创建了一个类,如下所示。。。 对于两个不同的函数,我在不同的文件中

  • 问题内容: 我想在测试函数中放入一些日志记录语句,以检查一些状态变量。 我有以下代码片段: 我得到以下输出: 请注意,只有来自块的日志记录消息才被传输到控制台。 是否有一种方法也可以强制从测试方法向控制台发出日志记录? 问题答案: 为我工作,这是我得到的输出:[snip-> example was not正确] 编辑:看来您必须将选项传递给py.test,以便它不会捕获stdout。在这里(未安装

  • 本文向大家介绍如何在pytest中的一组测试中对选定的测试进行分组?,包括了如何在pytest中的一组测试中对选定的测试进行分组?的使用技巧和注意事项,需要的朋友参考一下 我们可以从pytest中的一组测试中对选定的测试进行分组.pytest是python中的一个测试框架。要安装pytest,我们需要使用命令pip install pytest。安装后,我们可以通过pytest –version命

  • 问题内容: 我正在使用pytest。我的目录中有两个文件。在其中一个文件中,有一个长时间运行的测试用例,它会生成一些输出。在另一个文件中,有一个测试用例读取该输出。如何确保两个测试用例的正确执行顺序?除了以适当的顺序将测试用例放入同一文件之外,还有其他选择吗? 问题答案: 通常,您可以使用其明确指定的hook来配置pytest基本上任何部分的行为。 对于您的情况,您需要“ pytest_colle

  • 问题内容: 在我们的一项测试中,我们将测试 鼠标悬停后的链接(元素)样式更改。 __ 默认情况下,链接具有黑色字体,没有修饰,但是在鼠标上时,字体变为蓝色,并且链接文本带有下划线。这是相关的测试: 问题在于,每10个运行中就有1个运行失败,并显示以下错误消息: 预期’rgba(11,51,60,1)’等于’rgba(42,100,150,1)’。 预期“无”等于“下划线”。 我怀疑它在实际更改之前