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}")
    • 运行结果
相关推荐
2301_793804692 小时前
深入理解Python的if __name__ == ‘__main__‘
jvm·数据库·python
qyzm2 小时前
牛客周赛 Round 136
数据结构·python·算法
qq_334903152 小时前
C++与人工智能框架
开发语言·c++·算法
紫檀香2 小时前
Alembic入门教程
后端·python
2401_891482172 小时前
C++中的状态模式
开发语言·c++·算法
2401_833197732 小时前
用Python生成艺术:分形与算法绘图
jvm·数据库·python
wayz112 小时前
DuckDB 完全指南:从入门到精通
python·金融·量化交易
952362 小时前
初识多线程
java·开发语言·jvm·后端·学习·多线程
暮冬-  Gentle°2 小时前
用Python批量处理Excel和CSV文件
jvm·数据库·python