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}")
    • 运行结果
相关推荐
for_ever_love__2 分钟前
python基础语法学习: 类型注解
开发语言·python·学习
caimouse8 分钟前
ReactOS 图形系统分析(46):DC 工具 — dcutil.c
c语言·开发语言
王志来1379447300821 分钟前
聚焦五大核心场景:工控服务器机箱平台的垂直深耕之路
运维·服务器·python
xixiaoyunya21 分钟前
从零搭建跨域互联网络:个人与小团队的轻量组网方案技术解析
开发语言·智能路由器·php
资源大佬星 课it26 分钟前
黑马 Java+AI新版V16零基础就业班视频课程百度网盘下载
java·开发语言·人工智能
zmzb010328 分钟前
Python课后习题训练记录Day193
开发语言·python
卷无止境29 分钟前
LiteLLM 全面解析开源AI网关如何统一管理百余种大模型
后端·python
郝学胜-神的一滴33 分钟前
[简化版 GAMES 104] 现代游戏引擎 06:从Tick时序到邮局模型,拆解确定性世界的底层密码
开发语言·c++·游戏引擎·图形渲染·软件开发·opengl
二十雨辰33 分钟前
[Java]-微服务面试题
java·开发语言·微服务
不会代码的小猴33 分钟前
6. Qt网络编程
开发语言·c++·笔记·qt·算法