传递给 pytest 夹具的参数可以作为变量传递吗?

2023-11-25

我有两个简单的测试设置,我试图将它们分组到一个夹具中 并希望测试函数将“参数”传递给夹具。

这是一个人为的例子,来解释我的问题。 假设我有以下 pytest 夹具:

@pytest.fixture(scope="module", params=['param1','param2'])
def myFixture(request):
    if request.param == 'param1':
        p = 5
    elif request.param == 'param2':
        p = 10
    return p

# would like to set request.param = ['param1'] for myFixture
def test_madeup(myFixture):
    assert myFixture == 5

# would like to set request.param = ['param2'] for myFixture
def test_madeup2(myFixture):
    assert myFixture == 10

我可以将上面的参数作为输入传递给test_madeup功能? 所以,像下面这样:

@pytest.fixture(scope="module", params=fixtureParams)
def myFixture(request):
    if request.param == 'param1':
        return 5
    elif request.param == 'param2':
        return 10


def test_madeup(myFixture, ['param1']):
    assert myFixture == 5

当然,上面的方法是行不通的。实际情况要复杂一些 但我只是想知道我是否可以通过params=['param1','param2']到固定装置test_madeup功能。


如果我正确理解你的问题,你基本上想通过提供一些测试信息来选择一个参数化夹具的实例来执行测试。尽管我们可以考虑一种机制,但这是不可能的。我不确定以下解决方案是否符合您的整个问题,但这是解决上述具体情况的一种方法:

import pytest

@pytest.fixture(scope="module")
def myFixture1():
    return 5

@pytest.fixture(scope="module")
def myFixture2():
    return 2

@pytest.fixture(scope="module", params=["param1", "param2"])
def myFixture(request):
    if request.param == 'param1':
        return request.getfuncargvalue("myFixture1")
    elif request.param == 'param2':
        return request.getfuncargvalue("myFixture2")

def test_1(myFixture1):
    assert myFixture1 == 5

def test_2(myFixture2):
    assert myFixture2 == 2

def test_all(myFixture):
    assert myFixture in (2,5)

这运行了四个测试,因为test_all对两个装置执行两次。

如果您的装置的设置并不繁重,您可能还拥有一个生成列表的装置和一个“迭代”参数化装置。然后,测试可以获取整个列表并将其索引到其中。

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

传递给 pytest 夹具的参数可以作为变量传递吗? 的相关文章

  • Spark 请求最大计数

    我是 Spark 的初学者 我尝试请求允许我检索最常访问的网页 我的要求如下 mostPopularWebPageDF logDF groupBy webPage agg functions count webPage alias cntW
  • 围绕 readline 构建的 python 批处理的触发器选项卡完成

    背景 我有一个 python 程序 它导入并使用 readline 模块来构建自制的命令行界面 我有第二个 python 程序 围绕 Bottle 一个 Web 微框架构建 充当该 CLI 的前端 第二个 python 程序向第一个程序打开
  • 从数据框中按索引删除行

    我有一个数组wrong indexes train其中包含我想从数据框中删除的索引列表 0 63 151 469 1008 要删除这些索引 我正在尝试这样做 df train drop wrong indexes train 但是 代码失败
  • 使用 python 进行串行数据记录

    Intro 我需要编写一个小程序来实时读取串行数据并将其写入文本文件 我在读取数据方面取得了一些进展 但尚未成功地将这些信息存储在新文件中 这是我的代码 from future import print function import se
  • Python模块可以访问英语词典,包括单词的定义[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 python 模块 它可以帮助我从英语词典中获取单词的定义 当然有enchant 这可以帮助我检查该单词是否存在于英语中
  • 从 ffmpeg 获取实时输出以在进度条中使用(PyQt4,stdout)

    我已经查看了很多问题 但仍然无法完全弄清楚 我正在使用 PyQt 并且希望能够运行ffmpeg i file mp4 file avi并获取流式输出 以便我可以创建进度条 我看过这些问题 ffmpeg可以显示进度条吗 https stack
  • 通过列表理解压平列表列表

    我正在尝试使用 python 中的列表理解来展平列表 我的清单有点像 1 2 3 4 5 6 7 8 只是为了打印这个列表列表中的单个项目 我编写了这个函数 def flat listoflist for item in listoflis
  • if 语句未命中中的 continue 断点

    在下面的代码中 两者a and b是生成器函数的输出 并且可以评估为None或者有一个值 def testBehaviour self a None b 5 while True if not a or not b continue pri
  • 如何在 pytest 中将单元测试和集成测试分开

    根据维基百科 https en wikipedia org wiki Unit testing Description和各种articles https techbeacon com devops 6 best practices inte
  • 忽略 Mercurial hook 中的某些 Mercurial 命令

    我有一个像这样的善变钩子 hooks pretxncommit myhook python path to file myhook 代码如下所示 def myhook ui repo kwargs do some stuff 但在我的例子中
  • 以同步方式使用 FastAPI,如何获取 POST 请求的原始正文?

    在中使用 FastAPIsync not async模式 我希望能够接收 POST 请求的原始 未更改的正文 我能找到的所有例子都显示async代码 当我以正常同步方式尝试时 request body 显示为协程对象 当我通过发布一些内容来
  • 使用 Python pandas 计算调整后的成本基础(股票买入/卖出的投资组合分析)

    我正在尝试对我的交易进行投资组合分析 并尝试计算调整后的成本基础价格 我几乎尝试了一切 但似乎没有任何效果 我能够计算调整后的数量 但无法获得调整后的购买价格有人可以帮忙吗 这是示例交易日志原始数据 import pandas as pd
  • Numpy 过滤器平滑零区域

    我有一个 0 及更大整数的 2D numpy 数组 其中值代表区域标签 例如 array 9 9 9 0 0 0 0 1 1 1 9 9 9 9 0 7 1 1 1 1 9 9 9 9 0 2 2 1 1 1 9 9 9 8 0 2 2 1
  • 奇怪的 MySQL Python mod_wsgi 无法连接到 'localhost' (49) 上的 MySQL 服务器问题

    StackOverflow上也有类似的问题 但我还没有发现完全相同的情况 这是在使用 MySQL 的 OS X Leopard 机器上 一些起始信息 MySQL Server version 5 1 30 Apache 2 2 13 Uni
  • 在 pytube3 中获取 youtube 视频的标题?

    我正在尝试构建一个应用程序来使用 python 下载 YouTube 视频pytube3 但我无法检索视频的标题 这是我的代码 from pytube import YouTube yt YouTube link print yt titl
  • Pandas 根据 diff 列形成簇

    我正在尝试使用 Pandas 根据表示时间 以秒为单位 的列中的差异来消除数据框中的一些接近重复项 例如 import pandas as pd numpy as np df pd DataFrame 1200 1201 1233 1555
  • 如何使用列表作为pandas数据框中的值?

    我有一个数据框 需要列的子集包含具有多个值的条目 下面是一个带有 运行时 列的数据框 其中包含程序在各种条件下的运行时 df condition a runtimes 1 1 5 2 condition b runtimes 0 5 0 7
  • 使用yield 进行字典理解

    作为一个人为的例子 myset set a b c d mydict item yield join item s for item in myset and list mydict gives as cs bs ds a None b N
  • Ubuntu 上的 Python 2.7

    我是 Python 新手 正在 Linux 机器 Ubuntu 10 10 上工作 它正在运行 python 2 6 但我想运行 2 7 因为它有我想使用的功能 有人敦促我不要安装 2 7 并将其设置为我的默认 python 我的问题是 如
  • Elastic Beanstalk 中的 enum34 问题

    我正在尝试在 Elastic Beanstalk 中设置 django 环境 当我尝试通过requirements txt 文件安装时 我遇到了python3 6 问题 File opt python run venv bin pip li

随机推荐

  • java中的字符串池

    Java有字符串池 因此字符串类的对象是不可变的 但我的问题是 创建 String POOL 的必要性是什么 为什么字符串类不像其他类那样保留它自己的值 JVM 内部是否需要一些字符串 或者这是性能优势 如果是的话怎么办 池是可能的 因为字
  • 通过“灾难恢复”在内存和存储受限的系统上加密和/或解密大文件 (AES)

    我有一个相当笼统的问题 所以如果有点模糊 请原谅 因此 我们假设有一个 1GB 的文件 需要在给定系统上加密并随后解密 问题是系统的可用内存少于 512 MB 存储空间大约为 1 5 GB 给定或需要 因此 对于 板载 文件 我们有大约 5
  • 更改 Oracle 11g XE 上的 NLS 字符集参数

    我使用的是 Oracle 11g Express 版 目前 当我使用以下命令检查 NLS 字符集参数时SELECT FROM nls database parameters 它给出了默认值 NLS CHARACTERSET AL32UTF8
  • 如何在 ASP.NET Core 中使用支持依赖注入的自定义模型绑定器?

    我正在尝试在 MVC 中使用自定义模型绑定器 我想从 IoC 容器中解析它 我遇到的问题是 在添加 MVC 服务时无法访问我的容器 因为我的容器尚未构建 并且我需要在构建容器之前添加 MVC 感觉就像是先有鸡还是先有蛋的问题 我确信我缺少一
  • 如何安装 Microsoft.SqlServer.Management.SqlParser?

    当我在新机器上重建它时 我的 c 安装程序项目出现了很多警告 类似的警告是 他们正在寻找 11 0 0 0 版本的 dll 而该 dll 只存在 10 0 0 0 版本 我发现这是由于安装的 SQL Server 版本 SQL Server
  • 如何允许匿名上传到云存储

    我需要我的用户将文件上传到我的 Google Cloud Storage 而无需通过 Google 进行身份验证 这些用户主要是运行我的应用程序的 Windows 台式机 笔记本电脑用户 在阅读了不同的身份验证机制后 我发现可断点续传可能就
  • OSX 10.9.2 上的 Java 1.7 作为 1.5 运行?

    为这件事揪着我的头发 java version and javac version两者都报告相同的 1 7 0 45 但是当我尝试编译最简单的类时 我收到一个类文件错误 gt cat A java public class A gt jav
  • 带有语句主体的 lambda 表达式无法转换为 nopCommerce 中的表达式树 [重复]

    这个问题在这里已经有答案了 我尝试在 nopCommerce 3 0 中创建 linq 联接查询 我在 linq 中加入两个表并写入 代码成功 但视觉工作室智能感知显示错误 例如 带有语句体的 lambda 表达式无法转换为表达式树 请看下
  • 为什么需要“-lpthread”?

    所以我的问题是 为什么在编译命令末尾需要 lpthread 为什么这个命令有效 gcc o name name c lpthread 但这不会 gcc o name name c 我在我的 C 代码中使用 pthread h 库 我已经在网
  • Jersey 客户端上传进度

    我有一个球衣客户端 需要上传一个足够大的文件以需要进度条 问题是 对于需要几分钟的上传 我看到传输的字节数达到 100 申请一开始 然后需要几分钟时间来打印 on finish 字符串 就好像字节被发送到缓冲区 我正在读取传输到缓冲区的速度
  • 如何修复 Vue3 客户端版本的“unsafe-eval”错误?

    我在我的应用程序中使用 Express cors 和头盔 Vue3仅在客户端使用 库文件自托管在public文件夹中 我只是做 将模块添加到客户端 问题是当我使用它时 它总是给我一个Uncaught EvalError Refused to
  • Java 中文件存在的锁定

    简洁版本 为什么要File createNewFile 不能用于文件锁定 或者更具体地说 如果使用它来锁定应用程序数据目录是否会出现问题 Details 我想使用锁定文件来保护我的应用程序数据目录 如果该文件lock存在 目录被锁定 应用程
  • SqlBulkCopy 从列表 <>

    如何使用 SqlBulkCopy 从简单对象的 List 中进行大量插入 我是否实现自定义 IDataReader With 快速会员 您可以做到这一点 而无需通过DataTable 在我的测试中 性能提高了一倍多 using var bc
  • 如何在我的应用程序中手动包含 VCL 样式?

    我有一个应用程序 它使用条件能够将其编译为 VCL 表单应用程序或 Delphi XE2 中的 Windows 服务应用程序 但是 由于我手动更改了项目的主源文件 IDE 将不再允许我使用标准项目选项窗口进行某些修改 具体来说 我无法选择要
  • 如何在 string.replace 中输入正则表达式?

    我需要一些关于声明正则表达式的帮助 我的输入如下 this is a paragraph with lt 1 gt in between and then there are cases where the lt 99 gt number
  • XMLHttpRequest upload.onprogress 立即完成

    我正在尝试使用 HTML5 制作一个带有进度表的文件上传器 这是我的代码
  • C++/CLI:相对于 C# 的优势

    与 C 相比 托管 C CLI 有什么主要优势吗 绝对不是我认为的语法 因为 C CLI 中的以下代码非常丑陋 C CLI 代码 Out List
  • 日志方法之间的区别

    我是 android 新手 我使用以下方法打印 log cat Log w Tag String text 并记录文本打印 但经过一段时间的搜索后 我找到了更多打印 logcat 的方法 例如 Log v Log d 现在我对这些方法感到困
  • 跨 JavaEE Web 服务使用单个 MongoClient

    在阅读了 mongo 文档后 该文档说 MongoClient 的每个实例都处理自己的池 我该如何在整个应用程序中只拥有一个实例呢 这看起来可能是使用单例 bean 的场景 但这似乎会违背连接池的目的 如果一次只有一个用户能够访问包含 Mo
  • 传递给 pytest 夹具的参数可以作为变量传递吗?

    我有两个简单的测试设置 我试图将它们分组到一个夹具中 并希望测试函数将 参数 传递给夹具 这是一个人为的例子 来解释我的问题 假设我有以下 pytest 夹具 pytest fixture scope module params param