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}")
    • 运行结果
相关推荐
lili00124 小时前
Claude自动修Bug配置优化与避坑指南
java·人工智能·python·bug·ai编程
Vallelonga4 小时前
Rust 中 unsafe 关键字的语义
开发语言·rust
Szime4 小时前
靠谱的终端工厂采购电子元器件供应链哪家更适合研发型企业?
人工智能·python
AI砖家4 小时前
前端 JavaScript 异步处理全方案详解:从回调到 Observable
开发语言·前端·javascript
思麟呀4 小时前
C++工业级日志项目(七)日志器核心
linux·开发语言·c++·windows
2401_873479404 小时前
如何用IP离线库批量清洗订单IP,自动标注省市区?
开发语言·网络·python
py小王子4 小时前
期刊复现 | Python实现扇形小提琴图
python·期刊图片复现
lcj25114 小时前
vector的基本使用 + 手搓成员变量 size capacity begin end operator[] reserve扩容 拷贝构造 赋值析构
开发语言·c++·笔记·面试
GHL2842710904 小时前
Qt Creator 19.0.0 (Community)下载
开发语言·qt