Pytest 固定装置的范围“类”在每个方法上运行

2024-05-16

我正在尝试使用 Pytest 创建一个测试环境。这个想法是将测试方法分组到类中。

对于每个班级/小组,我想附上config将要参数化的夹具。这样我就可以使用“配置 A”运行所有测试,然后使用“配置 B”运行所有测试,依此类推。

但同时,我也想要一个resetFixture,可以在类的特定方法或所有方法之前执行。

我遇到的问题是,一旦我应用我的reset固定装置(对于一个方法或整个类),configFixture 似乎在函数作用域而不是类作用域中工作。所以,一旦我应用了reset夹具、configFixture 在类中的每个方法之前/之后调用。

下面的代码重现了这个问题:

import pytest
from pytest import *

@fixture(scope='class')
def config(request):
    print("\nconfiguring with %s" % request.param)
    yield
    print("\ncleaning up config")

@fixture(scope='function')
def reset():
    print("\nreseting")

@mark.parametrize("config", ["config-A", "config-B"], indirect=True)
#@mark.usefixtures("reset")
class TestMoreStuff(object):

    def test_a(self, config):
        pass

    def test_b(self, config):
        pass

    def test_c(self, config):
        pass

测试显示了如何config固定装置应该可以工作,整个班级只执行一次。如果您取消注释usefixtures装饰,你可以注意到config固定装置将在每个测试方法中执行。是否可以使用reset固定装置而不触发此行为?


正如我在评论中提到的,这似乎是 Pytest 3.2.5 中的一个错误。

有一个解决方法,即“强制”参数化的范围。因此,在这种情况下,如果您包括scope="class" in the parametrize装饰器,你会得到想要的行为。

import pytest
from pytest import *

@fixture(scope='class')
def config(request):
    print("\nconfiguring with %s" % request.param)
    yield
    print("\ncleaning up config")

@fixture(scope='function')
def reset():
    print("\nreseting")

@mark.parametrize("config", ["config-A", "config-B"], indirect=True, scope="class")
@mark.usefixtures("reset")
class TestMoreStuff(object):

    def test_a(self, config):
        pass

    def test_b(self, config):
        pass

    def test_c(self, config):
        pass
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pytest 固定装置的范围“类”在每个方法上运行 的相关文章

  • 多索引上的 pandas dataframe groupby

    我正在使用 Pandas dataframe 来读取 Excel 文件并对其进行一些操作 我有一个包含多行的标题 现在我想按几个列值进行分组 但是我无法找到解决方案 Excel 示例 name address contact info fi
  • 努力理解 Python 需要虚拟环境的原因

    我来自 JavaScript 所以熟悉 NPM 在那里 您可以全局安装包 通过使用 g 标志 或在项目中本地安装包 在 Python 中 他们有这些虚拟环境 我仍然有点不确定为什么需要它们 我知道这是为了在一台机器上拥有不同版本的相同包 是
  • 当存在多个条件时替换 numpy 数组中的元素

    这个问题与以下帖子相关 如果满足条件则替换 Numpy 元素 https stackoverflow com questions 19766757 replacing numpy elements if condition is met 假
  • 如何在 SQLAlchemy 中连接两个表中的数据?

    我有3张桌子 Account User and Organization Account由组成id name and organization id User由组成email and organization id Organization
  • 求 Petersen 子图中的哈密顿路径

    我开始使用 IDE Jupyter Python 3 6 并出现了一个问题 我必须通过IDE绘制Petersen子图中的哈密顿路径 但我不知道该怎么做 我显示有关该图的信息 彼得森图 https en wikipedia org wiki
  • 将多种类型存储为 C++ 字典中的值?

    我想编写一个行为几乎等同于 Python 字典的 C 对象 C 的std map and std unordered map容纳了 Python 字典已有的一些功能 但缺乏最重要的功能之一 即能够添加任意对象和类型 即使不可能 您离实现 P
  • lmfit 最小化失败并出现 ValueError:数组太大

    我正在尝试使用 暴力 方法来最小化 20 个变量的函数 它因神秘错误而失败 这是完整的代码 import random import numpy as np import lmfit def progress update params i
  • 如何将 python 点列表转换为 numpy 图像数组?

    我有一个 python 点列表 x y 坐标 200 245 344 248 125 34 它表示二维平面上的轮廓 我想使用一些 numpy scipy 算法进行平滑 插值等 它们通常需要 numpy 数组作为输入 例如scipy ndim
  • ValueError:当数组不是序列时设置带有序列的数组元素

    您好 此代码旨在存储使用 open cv 绘制的矩形的坐标 并将结果编译为单个图像 import numpy as np import cv2 im cv2 imread 1 jpg im3 im copy gray cv2 cvtColo
  • 尝试使用 Paramiko 通过 SSH 连接到新的 EC2 实例时出现问题

    我正在编写一个脚本 该脚本使用 boto 启动一个新的 EC2 实例 并使用 Paramiko SSH 客户端在该实例上执行远程命令 无论出于何种原因 Paramiko 客户端无法连接 我收到错误 Traceback most recent
  • 如何在python中将所有参数转换为字典

    我想要我的功能func args kwargs 返回一本字典 其中包含我提供给它的所有参数 例如 func arg1 arg2 arg3 value3 arg4 value4 应该返回一本这样的字典 arg1 value1 arg2 val
  • 带约束的简单线性回归

    我开发了一种算法来循环 15 个变量并为每个变量生成一个简单的 OLS 然后算法再循环 11 次以产生相同的 15 个 OLS 回归 但 X 变量的滞后每次增加 1 我选择具有最高 r 2 的自变量 并使用 3 4 或 5 个变量的最佳滞后
  • Python 是否有相当于 R 的sample() 函数?

    我想知道Python是否有相当于sample R 中的函数 The sample https stat ethz ch R manual R devel library base html sample html函数使用带替换或不带替换的方
  • 导入不起作用

    我有两个文件说a py and b py 在 a py 中 我们的确是 import xxx from b import 在 b py 中我们有一个函数需要module xxx 现在当函数在b py被调用自a py它找不到模块xxx 为什么
  • Python带有负数的排序列表[重复]

    这个问题在这里已经有答案了 为了尝试通过练习来学习Python 我正在尝试使用Python来实现和测试快速排序算法 实现本身并不困难 但是排序的结果有点令人费解 当我对列表进行排序时 35 1 2 7 8 3 4 20 6 53 结果给了我
  • 如何检查给定名称的变量是否是非本地变量?

    给定一个堆栈帧和一个变量名 我如何判断该变量是否是非局部的 例子 import inspect def is nonlocal frame varname How do I implement this return varname not
  • 在标准 python 线程中发出信号

    我有一个线程应用程序 其中有一个网络线程 UI 部分通过callback到这个线程 线程是一个normalpython 线程 它是NO QThread 是否可以在该线程内发出 PyQT Slot 不 不可能像这样从 python 线程发出
  • 如何从本地计算机或网络资源在 Jupyter Notebook 中嵌入图像或图片?

    我想将图像包含在 jupyter 笔记本中 如果我执行以下操作 它会起作用 from IPython display import Image Image img picture png 但我想将图像包含在 markdown 单元格中 并且
  • 使用 pytz 获取时区的国家/地区代码?

    我在用着pytz http pytz sourceforge net country information 我已经阅读了整个文档表 但没有看到如何做到这一点 我有一个时区 美国 芝加哥 我想要的只是获取该时区的相应国家 地区代码 美国 它
  • 访问 django for 循环中的元素

    我有一个 Django 模板 其中包含以下代码 该模板创建多个按钮并尝试通过单击 在同一按钮上 删除 隐藏其中一个按钮 for h in helicopters div class btn group div

随机推荐

  • 如何在应用程序项目中使用 Cocoa Touch 框架

    我熟悉构建单个 iOS 应用程序 但我坚持使用 Cocoa Touch 框架向多个应用程序共享通用代码 问题 框架的头文件不可见 无法链接到消费应用程序项目 我做了什么 1 我创建了一个名为 libTestFramework 的项目 Coc
  • Powerquery:展开其中有记录的所有列

    使用 Microsoft Excel 2013 中的 Power Query 我创建了一个如下所示的表 To insert this in Power Query append a before the Table FromRows Tab
  • 证明 Excel VBA Scripting.Dictionary 不保留项目插入顺序

    我正在尝试决定是否为我的项目使用 Excel VBA 集合或字典 出于多种原因 我倾向于字典 但在使用字典时我会继续阅读它For Each循环检索字典项目或从字典 Items 数组读取项目时 检索顺序可能不是添加项目的顺序 这对于我的应用程
  • $().load() 不是加载整个页面,而是需要在所有页面上保留菜单

    我想使用 jQuery AJAX 重新加载我网站的内容区域 load 功能 但我的问题是header and footer无论您的入口 URL 为何 都需要在所有页面上显示 我的网站是使用模板构建的 所以我的第一个想法是删除独特内容上方和下
  • 在Python中循环命名元组的元素

    我有一个命名元组 我将值分配给这样的 class test object self CFTs collections namedtuple CFTs c4annual c4perren c3perren ntfixing self CFTs
  • 什么时候需要“typename”关键字? [复制]

    这个问题在这里已经有答案了 可能的重复 正式来说 typename 是做什么用的 https stackoverflow com questions 1600936 officially what is typename for 我必须在哪
  • 为每个因素级别添加日期时间序列

    我有一个带有因子列的数据框 s lt data frame id 901 910 s id lt as factor s id 我有一个日期时间序列 library lubridate start lt now as difftime 2
  • 如何使用gunicorn和bokeh服务配置Nginx

    我想提供一个 Flask 应用程序 该应用程序使用本地网络服务器上的嵌入式散景服务 为了说明这一点 我使用了一个例子散景服务示例 https github com bokeh bokeh blob 0 12 11 examples howt
  • 由于重复捕获组而不是捕获重复组,正则表达式不匹配

    我有以下正则表达式 A G A G 具有以下表达式 A BsCb 我期望 3 个匹配结果 A Bs Cb 但测试在https regex101 com https regex101 com 只给我最后一场比赛Cb 并告诉我重复捕获组只会捕获
  • 如何从@google-cloud/storage读取文件?

    我正在从我的存储桶中检索文件 我收到该文件并想要阅读其内容 但我不想将其下载到我的本地项目 我只想读取内容 获取数据并用它进行其他操作 我的代码 export const fileManager async gt try const sou
  • 3D 网格之间的豪斯多夫距离

    我有多个网格 numpy 数组 Nk Ny Nx 并且想使用 Hausdorff 距离作为这些网格相似性的度量 scipy 中有几个模块 scipy spatial distance cdist scipy spatial distance
  • jsf 2.0 中看不见的注释? [复制]

    这个问题在这里已经有答案了 是否可以在我的 xhtml 文件中嵌入注释 这些注释仅显示在源代码中 而不显示在渲染结果中 我想在文件中包含作者 日期 但最终用户在生成的输出中不应该看到它们 如果我使用标准评论标签浏览器显示它们 将以下内容添加
  • StringComparison.InvariantCultureIgnoreCase 去哪儿了?

    我正在将 C 代码移植到 Windows 应用商店应用程序 令我惊讶的是 以下代码不再起作用 someString Equals someOtherString StringComparison InvariantCultureIgnore
  • 如何使用 hibernate 标准查询将两个属性连接成一个属性

    例如 有 2 个房产的门牌号和密码 我想要一个房产作为地址 例如门牌号是 10 pincode 是 110064 组合地址属性是 10 110064 这是我的代码 final Criteria criteria getDatabaseSes
  • Nginx merge_slashes 重定向

    我在我的 Java 应用程序中使用 nginx 我的问题是 nginx 正在合并斜杠 我无法将我的网站重定向到正确的版本 例如 http goout cz cs koncerty praha 被合并到 http goout cz cs ko
  • 将 FragmentContainerView 与导航组件一起使用?

    更新为导航后2 2 0 beta01 https developer android com jetpack androidx releases navigation 2 2 0 beta01从以前的版本开始 lint 会发出有关替换的警告
  • 如何在 SQL Server 中保持数据行内

    我正在尝试找出如何检测数据是否在VARCHAR n SQL Server 2008 中的列存储在行内或行外 有谁知道如何做到这一点 另外 如果我们需要数据 有没有办法将数据保持在行中 要查看某个值是行内还是行外 您可以使用DBCC PAGE
  • Word通过vba宏删除tabe列出现错误

    我想将excel中的数据复制到word表中 然后从表中删除一些列 我可以将数据复制到表中 但是当我删除列时会出现错误 无法访问此集合中的各个列 因为该表具有混合的单元格宽度 我的代码 Public Tbl1 As Table Sub cal
  • 为什么 EF Core 一对多关系集合返回 null?

    这可能看起来像一个重复的问题EF Core 一对多关系列表返回 null https stackoverflow com questions 55210832 ef core one to many relationship list re
  • Pytest 固定装置的范围“类”在每个方法上运行

    我正在尝试使用 Pytest 创建一个测试环境 这个想法是将测试方法分组到类中 对于每个班级 小组 我想附上config将要参数化的夹具 这样我就可以使用 配置 A 运行所有测试 然后使用 配置 B 运行所有测试 依此类推 但同时 我也想要