Pytest框架 —— Fixture装饰器的使用(一)

Pytest中的fixture装饰器详解 pytest是Python生态中最流行的自动化测试框架,它通过简洁的语法、强大的功能(如fixture、参数化、插件扩展等)和丰富的插件生态,帮助开发者高效完成单元测试、集成测试和端到端测试。 阅读详情

1、Fixture装饰器的用途

  1. 做测试前后的初始化设置,如测试数据准备,链接数据库,打开浏览器等这些操作都可以使用Fixture来实现。

  2. 测试用例的前置条件可以使用Fixture实现,比直接使用Pytest框架的setup()和teardown()函数更加灵活。

  3. Fixture是Pytest用于将测试前后进行预备,清理工作的代码分离出核心测试逻辑的一种机制!

  4. Fixture可以实现Unittest不能实现的功能,比如:Unittest中的测试用例和测试用例之间是无法传递参数和数据的,但是Fixture却可以解决这个问题。

2、Fixture参数说明

可以使用pytest.fixture()查看fixture()函数的源码和所需要的参数,同Fixture装饰器需要的参数一样。

fixture(scope="function", params=None, autouse=False, ids=None, name=None):  

说明:

  • scope:表示被@pytest.fixture()装饰器所标识方法的作用域。

    作用域有四个级别,函数function(默认),类class,模块module,包package/session。

    说明:function作用域包含函数和方法。

  • params:一个可选的参数列表,用于做Fixture的参数化。

    可将数据提供给其他的Fixture,或者所有测试使用它 。

  • autouse:autouse=Ture则开启自动使用Fixture功能,也是调用Fixture函数一种方法。

    Fixture装饰器会自动执行作用域范围内的所有用例的前后置。

    autouse默认值为Flase。

  • ids:一个字符串id的列表,即当使用params参数化时,给每一个值设置一个变量名。

    如果没有提供ID,params将自动生成ID 。

  • name:表示给被@pytest.fixture()装饰器修饰的方法取一个别名,调用时可以使用别名调用。

    默认为装饰器所装饰的函数名称。

3、Fixture装饰器简单应用

使用Fixture装饰器来实现部分用例的前后置

比如:我们在测试一个操作流程时,有的测试用例需要登陆,有的测试用例执行不需要用户登陆。

如果要直接使用setup_function()前置函数来实现,该文件中的所有用例执行前都需要进行用户登陆。

如下示例:

import pytest

# 函数级,前置函数
def setup_function():
    print("用户登陆")

def test_add_cart():
    print("添加购物车--需要登录")


def test_add_address():
    print("添加收货地址--需要登录")


def test_browser_goods():
    print("浏览商品--不需要登录")


if __name__ == '__main__':
    pytest.main()
    
"""
执行结果:

用户登陆
添加购物车--需要登录
PASSED用户登陆
添加收货地址--需要登录
PASSED用户登陆
浏览商品--不需要登录
PASSED
"""

我们可以使用Fixture装饰器来实现部分用例的前后置,如下示例

"""
1.学习目标
    掌握pytest  fixture定义
2.操作步骤
    1.在定义的函数前添加装饰器
        @pytest.fixture()
    2.编写函数
        @pytest.fixture()
        def 函数名():
            代码
    3.使用fixture
        在测试用例中,将上面定义的函数名称,当做参数传入到测试用例中即可
        def test_xx(函数名):
            用例步骤

"""
import pytest


# 步骤1
@pytest.fixture()
def login():  # 步骤3
    print("输入账号,密码,进行登录")


def test_add_cart(login):  # 步骤3
    print("添加购物车--需要登录")


def test_add_address(login):  # 步骤3
    print("添加收货地址--需要登录")


def test_browser_goods():
    print("浏览商品--不需要登录")


if __name__ == '__main__':
    pytest.main()

"""
执行结果:

输入账号,密码,进行登录
添加购物车--需要登录
PASSED输入账号,密码,进行登录
添加收货地址--需要登录
PASSED浏览商品--不需要登录
PASSED

只有添加购物车,添加收货地址的用例,执行了登陆操作
"""

提示:Fixture装饰器既可以实现部分用例的前后置,也可以是现实全部用例的前后置,所以比单独使用前置setup()函数和后置teardown()函数灵活多了。 

END绵薄之力

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

加入我的软件测试交流群:110685036免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

获取方式 :

 

『德不孤』Pytest框架 — 10、Pytest框架的Fixture装饰器(一) 文章目录1、Fixture装饰器的用途2、Fixture参数说明3、Fixture装饰器简单应用4、yield执行后置函数 1、Fixture装饰器的用途 做测试前后的初始化设置,如测试数据准备,链接数据库,打开浏览器等这些操作都可以使用Fixture来实现。 测试用例的前置条件可以使用Fixture实现,比直接使用Pytest框架的setup()和teardown()函数更加灵活。 Fixture是Pytest用于将测试前后进行预备,清理工作的代码分离出核心测试逻辑的一种机制! Fixture可以实现U 阅读详情

相关推荐

十、Pytest自动化测试框架 — Fixture装饰器的使用

###文章内容有配套的学习视频和笔记都放在了文章末尾### 1、Fixture装饰器的用途 做测试前后的初始化设置,如测试数据准备,链接数据库,打开浏览器等这些操作都可以使用Fixture来实现。 测试用例的前置条件可以使用Fixture实现,比直接使用Pytest框架的setup()和teardown()函数更加灵活。 Fixture是Pytest用于将测试前后进行预备,清理工作的代码分离出核心测试逻辑的一种机制! Fixture可以实现Unittest不能实现的功能,比如:Unittest中的

测试-八戒 2013

自动化测试框架pytest系列之8个常用的装饰器函数

pytest测试框架中的8个fixture功能

雨滴测试博客 5239

python pytest 介绍 插件介绍 fixture 装饰器 allure 报告 yaml 数据驱动

scope:表⽰被装饰器标记的⽅法的作⽤域(function默认,class,module,package,session) params:参数化(⽀持list[],tuple(),[(),()],([],[]))⾃动化测试包括⼀切通过⼯具(程序)的⽅式来代替或辅助⼿⼯测试的⾏为。其主要⼿段是模拟⼿⼯测试,通过组织编写⾃动化脚本执⾏测试⽤例,解决测试⼯作量⼤的问题,⾃动化测试能有效的提⾼测试效率。ps:我⽤的是mac系统,在写.py⽂件的路径时是这样写的,如果是win,注意⼀下⽂件路径即可。

weixin_42720667的博客 1810

【Pytest】常用装饰器

pytest装饰器mark,parametrize、skip、xfail

Yocczy的博客 794

pytest系列——fixture函数使用(pytest测试框架测试固件)

setup和teardown能实现在测试用例执行之前或之后做一些操作,但是这种是整个测试脚本全局生效的;如果我们想实现某些用例执行之前进行登录,某些用例执行之前不需要进行登录,这种场景我们再使用setup和teardown就无法实现了,这时候我们就需要用到fixture功能了。

mashang_z111的博客 3349

11.3 海岛微电网与工业园区的构网应用

海岛微电网与工业园区配电网是构网技术下沉应用的两大典型场景。海岛微电网以构网型储能为核心,解决孤岛系统稳定性问题,需具备黑启动、多能源协调和故障穿越能力;工业园区则侧重电能质量治理、并离网无缝切换和经济优化运行。两类场景均需解决多机并联稳定性、故障特性适配和分层协同控制等关键技术。构网型变流器的电压源构建能力、自适应控制策略及飞轮储能等特殊应用,为构建高可靠性、高经济性的分布式能源系统提供了创新解决方案。

技术工作者 1077

Pytest测试框架(四)---装饰器的使用

pytest测试框架 装饰器的使用

weixin_44701654的博客 2964

MacOS Intel芯片实战:Docker Compose一键部署Dify全流程解析

本文详细解析了在搭载Intel芯片的MacOS系统上,使用Docker Compose一键部署开源LLM应用开发平台Dify的全流程。内容涵盖环境准备、Docker配置与镜像加速、代码拉取与配置初始化、服务启动与问题排查,以及访问验证与初步探索,旨在帮助开发者快速在本地搭建私有化AI应用开发环境。

ik678901234的博客 612

pytest小白学习笔记(一):pytest框架结构和fixture/mark装饰器的基本原理和应用

记录笔记的原因是,我太浮躁了,这知识它不进脑子啊。本身pytest测试框架概念又多,自己静不下心,之前看了点视频就想上手练了,结果发现在编写实际用例时,问题很多,用fixture带参数传递的时候总有一些问题,可见还是处于一知半解迷迷糊糊的状态。所以决定还是走慢一点,先弄懂最基本的原理,做些简单的模拟,为了强迫自己全神贯注,就记录下来了。 想我永远三分钟热度,之前摸索pygame也是,练习一个项目练...

qq_33351430的博客 3227

告别交越失真:手把手教你设计高性能互补输出级电路(LTspice实测)

本文深入剖析音频放大器中常见的交越失真问题,并提供基于LTspice仿真的实战解决方案。通过对比二极管偏置、Vbe倍增器和集成运放驱动三种经典方案,手把手指导设计高性能互补输出级电路,涵盖原理分析、仿真验证及实物调试要点,助力消除音频失真,提升音质。

weixin_29190573的博客 544

YOLOv5 改进点总览:轻量化、高精度的背后有哪些魔改?

YOLOv5是由Ultralytics团队开发的高效目标检测模型,其核心改进包括:主干网络采用CSPDarknet53提升梯度传播效率;特征融合使用PANet增强小目标识别;输出结构采用解耦头设计优化定位和分类任务。此外,YOLOv5通过CIoU损失函数、Mosaic数据增强和SimOTA标签分配机制进一步提升性能。模型支持多种推理格式(ONNX/TensorRT等),并具备自动锚框匹配和多尺度训练功能,使其在轻量化(yolov5s仅7MB)与高性能(最高51.2% mAP)间取得平衡,但缺乏正式论文支撑是

guoguozgw的博客 1795

Python_yield函数用户

Python_yield函数用户

lkr 174

GD32F450以太网(1):ETH 外设接口简介

GD32F450以太网ETH MAC外设接口简介

Zhichao_Zhang的博客 1万+

pytest框架之fixture详细使用

简介:   fixture区别于unnitest的传统单元测试(setup/teardown)有显著改进:   1.有独立的命名,并通过声明它们从测试函数、模块、类或整个项目中的使用来激活。   2.按模块化的方式实现,每个fixture都可以互相调用。   3.fixture的范围从简单的单元测试到复杂的功能测试,可以对fixture配置参数,或者跨函数function,类class,模块module或整个测试session范围。 (很重要!!!)(很重要!!!)(很重要!!!) 谨记:当

king_liuhui的博客 1万+

软件设计师---计算机系统

软件设计师---计算机系统

我从不打没有准备的仗! 3万+

下采样优化实战:用ADown显著提升YOLOv11的多尺度特征保持能力

ADown 以“可编程梯度信息+多分支特征融合”打破了传统下采样的性能壁垒,为 YOLOv11 带来了多尺度特征的精准传递能力。从原理到代码集成,本教程已为你铺就了一条“小目标检测精度跃升”的实战路径。现在就动手尝试吧——当你看到模型对极小目标也能精准识别,且特征图细节完整时,你会明白这份技术探索的价值。我很乐意在你实践过程中帮你解决任何问题,让我们一起推动目标检测在下采样领域的边界。

FJN110的博客 417

Pytest框架之fixture详解

1)fixture通过函数实现。2)使用@pytest.fixture进行装饰pass3)前置准备工作代码和后置清理工作代码,都写在一个函数里面。4)通过yeild关键字,区分前置代码和后置代码。yeild之前的代码为前置代码,yeild之后的代码为后置代码在实际应用场景当中,可以只有前置准备工作代码,也可以只有后置清理工作代码。print("用例执行之前,执行的代码") # 前置代码yieldprint("用例执行之后,执行的代码") # 后置代码。

2301_78843735的博客 1876

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Python装饰器decorators和pytest夹具fixture详解和使用

本文介绍了Python装饰器与pytest夹具(fixture)的区别与联系。装饰器是一种高级功能,用于动态修改函数或类的行为,常用于日志、性能分析等场景。文章详细讲解了装饰器的基本语法、参数处理及内置装饰器的使用。而fixture是pytest框架中用于测试用例预置环境的机制,本质上是一个封装好的装饰器。文中重点分析了fixture的五个参数:scope(作用域)、autouse(自动执行)、params(参数)、ids(参数别名)和name(fixture别名),并通过代码示例展示了各参数的用法,帮助读

小轩的名古屋 1223

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Python Pytest中使用的装饰器pytest.fixture

最近在pytest中使用了很多装饰器觉得很好用,现在总结一下: pytest.fixture 一、通过装饰器@pytest.fixture(),定义测试固件(test fixture)。 实现setup_xxx的功能: import pytest # 函数名自定义 # 此时,login函数是一个测试固件,相对于实现了setup_xxx的功能。 @pytest.fixture() def login(): print('登录系统') token = 'a1b23c' ...

qq_24903737的博客 2610

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

pytest fixture装饰器

fixture装饰器5个参数含义详解fixture装饰器5个参数含义详解scope :autouse :params:ids:name:scope 参数使用代码(function)方法级别使用使用autouse自动执行,所有方法级的用例的前后值(class)类级别使用(module)模块级(一个py文件)别使用params参数化代码执行结果参数化和前后置一起使用ids参数:给参数取变量名name参数 给fixture标记的方法取别名 fixture装饰器5个参数含义详解 @pytest.fixture(sc

亚索的博客 1万+

Pytest框架中fixture功能详解

使用 @pytest.fixture 装饰器来定义一个 fixture。主要有几个参数fixture_function,scope,params,autouse,ids等,下面几个章节会详细介绍。被@pytest.fixture 装饰的函数会在测试函数或测试方法之前运行,并返回一个值,该值可以作为参数传递给测试函数或测试方法。举例:定义my_fixture函数返回data,将该函数传入测试用例test_example。#这里是设置代码。

kymppcds的博客 2181

pytest fixture基础大全详解

pytest框架的fixture测试夹具就相当于unittest框架的setup、teardown,但相对之下它的功能更加强大和灵活。

qq_37292005的博客 1509

pytest框架之fixture详细使用方法及举例

简介: fixture优点: 有独立的命名,并通过声明它们从测试函数、模块、类或整个项目中的使用来激活。 按模块化的方式实现,每个fixture都可以互相调用。 fixture的范围从简单的单元测试到复杂的功能测试,可以对fixture配置参数,或者跨函数function,类class,模块module或整个测试session范围。 fixture设计规范 文件名以test_*.py和*_test.py命名 以test_开头的函数 以Test开头的类 以test_开头的方法 fixture可以当做参

Z1998hx0919的博客 2641
上一篇: Pytest框架 —— setUp()和tearDown()函数
下一篇: Pytest框架 —— Fixture装饰器的使用(二)
测试界的吴彦祖
博客等级 码龄5年 7004粉丝 1521原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值