Pytest fixture 参数化(params 参数)

简介

pytest 还支持参数化 fixture,即可以为一个 fixture 提供多个不同的值,让多个测试用例使用不同的测试数据。这样可以有效减少重复代码,尤其适合测试多组输入输出的情况。


基本语法

  • params:传入一个列表,包含 Fixture 的不同参数。

  • request.param:可以在 Fixture 函数中通过 request.param 获取当前参数。

    python 复制代码
    import pytest
    
    @pytest.fixture(params=[param1, param2, param3, ...])
    def fixture_name(request):
        return request.param

单参数

  • 代码示例

    python 复制代码
    import pytest
    
    @pytest.fixture(params=[1, 2, 3])
    def number(request):
        yield request.param
        # return request.param  # 效果一致,同时存在只生效一个
    
    def test_number(number):
        assert number > 0
    • 运行结果

多参数

  • 代码示例

    python 复制代码
    import pytest
    
    @pytest.fixture(params=[
       ["user", 123],
       ["appli", 123456]
    ])
    def login(request):
        print(f"用户名:{request.param}")
        yield request.param
    
    def test_demo(login):
        print(f"demo case: 数据为: {login}")
    • 运行结果
相关推荐
狐狐生风6 分钟前
LangChain 向量存储:Chroma、FAISS
人工智能·python·学习·langchain·faiss·agentai
虹科网络安全8 分钟前
艾体宝干货|数据复制详解:类型、原理与适用场景
java·开发语言·数据库
狐狐生风15 分钟前
LangChain RAG 基础
人工智能·python·学习·langchain·rag·agentai
axng pmje33 分钟前
Java语法进阶
java·开发语言·jvm
老前端的功夫1 小时前
【Java从入门到入土】28:Stream API:告别for循环的新时代
java·开发语言·python
qq_435287921 小时前
第9章 夸父逐日与后羿射日:死循环与进程终止?十个太阳同时值班的并行冲突
java·开发语言·git·死循环·进程终止·并行冲突·夸父逐日
止语Lab1 小时前
从手动到框架:Go DI 演进的三个拐点
开发语言·后端·golang
yaoxin5211231 小时前
397. Java 文件操作基础 - 创建常规文件与临时文件
java·开发语言·python
小短腿的代码世界1 小时前
Qt日志系统深度解析:从qDebug到企业级日志框架
开发语言·qt
dFObBIMmai1 小时前
MySQL主从同步中大事务导致的延迟_如何拆分大事务优化同步
jvm·数据库·python