pytest之fixture用法

news2024/11/27 20:29:40

特点及优势

1、命令灵活:对于setup.teardown,可以不起这两个名字

2、数据共享:在conftest.py配置里写的方法可以实现数据共享,不需要import导入,可以跨文件共享

3、scope的层次及神奇的yield组合相当于各种setup和teardown

4、实现参数化

基本用法

@pytest.fixture()

import pytest


@pytest.fixture()
def login():
    print("完成登录操作")


def test_search():
    print("搜索功能,此方法不需要完成登录即可执行")


def test_cart(login):
    print("加入购物车,需要完成登录才可以")

fixture在自动化中的应用--作用域

@pytest.fixture(scope='module')

取值

范围

说明

function

函数级

每个函数或方法都会调用

class

类级别

每个测试类只运行一次

module

模块级别

每一个.py文件只调用一次

package

包级

没一个python包至调用一次

session

会话级

每次会话只需要运行一次,会话内所有方法及类、模块都共享这个方法

import pytest


@pytest.fixture(scope='module')
def login():
    print("完成登录操作")


def test_search(login):
    print("搜索功能,此方法不需要完成登录即可执行")


def test_cart(login):
    print("加入购物车,需要完成登录才可以")

fixture在自动化中的应用-yield关键字

场景:你已经可以将测试方法【前要执行的或依赖的】解决了,测试方法后销毁清除数据的要如何进行呢?

解决:通过在fixture函数中加入yield关键字,yield是调用第一次返回结果,第二次执行他下面的语句返回。

步骤:在@pytest.fixture(scope=module),在登录的方法中加yield,之后加销毁清楚的步骤。

import pytest


@pytest.fixture(scope='module')
def login():
    # setup操作
    print("完成登录操作")
    token = 1
    yield token  # 相当于return的操作
    # teardown操作
    print("完成登出操作")

def test_search(login):
    # print("搜索功能,此方法不需要完成登录即可执行")
    print(f"token = {login}")


def test_cart(login):
    # print("加入购物车,需要完成登录才可以")
    print(f"token = {login}")

fixture在自动化中的应用--数据共享

场景:与其他测试工程师合作一起开发时,公共的模块要在不同的文件中,要在大家都能访问到的地方

解决:使用conftest.py这个文件进行数据共享,并且他可以放在不同位置骑着不同的范围共享作用

前提:

conftest文件名是不能换的

放在项目下是全局的数据共享的地方

执行:

系统执行到参数login时,先从本模块中查找是否有这个名字的变量

之后在conftest.py中找是否有

步骤:

将登录模块带@pytest.fixture写在conftest.py中

fixture在自动化中的应用-自动应用

场景:不想原测试方法有任何改动,或全部都自动实现自动应用,没特例,也都不需要返回值时可以选择自动应用

解决:使用fixture中参数autouse=True实现

步骤:在方法上面加@pytest.fixture(autouse=True)

fixture在自动化中的应用-参数化

场景:测试离不开数据,为了数据灵活,一般数据都是用过参数传的

解决:fixture通过固定参数requests传递

步骤:在fixture中增加@pytest.fixture(params=[1,2,3,'tom'])

在方法参数写request,方法体里面使用request.param接收参数

import pytest


@pytest.fixture(params=[1, 2, 3, "测试"])
def login(request):
    print(f"数据名称为:{request.param}")
    return request.param


def test_search(login):
    print(f"{login}")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/364468.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL —— 表的操作

文章目录1. 创建表2. 查看表结构3. 修改表3.1 向表中插入数据3.2删除表中的数据3.3 修改表的性质3.3.1 添加字段3.3.2 修改字段的长度3.3.3 删除字段3.3.4 修改字段名3.3.5 修改表名4. 删除表5. 备份表前言: 本文会详细的讲解,在MySQL中表的操作。1. 创建…

Linux基础命令-uname显示系统内核信息

前言 这个命令主要是显示系统内核的相关信息,一般需要查看内核信息才会使用到这个命令,一起来看看吧。 一 命令的介绍 uname命令来自于英文词组“Unix name”的缩写,其功能是用于查看系统主机名、内核及硬件架构等信息。如果不加任务参数&am…

UVM实战(张强)-- UVM中的寄存器模型

目录一.整体的设计结构图二.各个组件代码详解2.1 DUT2.2 bus_driver2.3 bus_sequencer2.4 bus_monitor2.5 bus_agent2.6 bus_transaction2.7 bus_if2.8 my_if2.9 my_transaction2.10 my_sequencer2.11 my_driver2.12 my_monitor2.13 my_agent2.14 my_scoreboard2.15 my_env2.16…

龙芯GS232(MIPS 32)架构cache管理笔记

1 mips32架构 MIPS架构是一种基于精简指令集(Reduced Instruction Set Computer,RISC)的计算机处理器架构。MIPS架构由MIPS Technologies公司在1981年开发,并在1984年发布了第一款MIPS处理器。 MIPS架构的特点包括: …

Alkyne choline,685082-61-5,炔基胆碱,炔基可通过铜催化的点击化学进行修饰和共轭

1、基础产品数据(Basic Product Data):CAS号:685082-61-5中文名:炔胆碱,炔基胆碱英文名:Alkyne-choline ,Alkyne choline2、详细产品数据(Detailed Product Data&#xf…

深入讲解CFS组调度!(下)

接上文深入讲解CFS组调度!(上) 六、task group时间片 6.1. 时间片分配 若使能CFS组调度会从上到下逐层通过权重比例来分配上层分得的时间片,分配函数是sched_slice()。但是从上到下不便于遍历,因此改为从下到上进行…

盘点全网好评最多的7款团队协同软件,你用过哪款?

能亲自带团队管理项目当然是一件开心和兴奋的事,但是突然成为团队负责人后开始不大适应。如何转换角色,还有自己和团队成员之间在心理、行为等方面的互动也变得很敏感。新手领导上任的过程,是团队秩序再造的过程;是晋升者个人职业…

Python----------字符串

1.转义字符 注:转义字符放在你所想效果字符前 2.原始字符串 print(r"D:\three\two\one\now") ->D:\three\two\one\now注: 在使用原始字符串时,转义字符不再有效,只能当作原始的字符,每个字符都没有特殊…

MySQL(一)基础使用

MySQL基础使用概念数据库相关概念关系型数据库SQL通用语法SQL分类DDL数据库操作表操作表操作-数据类型表操作-修改表操作-删除DML添加数据修改数据删除数据DQL基本查询(不带任何条件)查询多个字段:字段设置别名去除重复记录条件查询&#xff…

2月第3周榜单丨飞瓜数据B站UP主排行榜(哔哩哔哩平台)发布!

飞瓜数据UP主排行榜(B站平台),通过充电数、涨粉数、成长指数三个维度来体现UP主账号成长的情况,为用户提供B站号综合价值的数据参考,根据UP主成长情况用户能够快速找到运营能力强的B站UP主。飞瓜数据UP主充电榜排行榜&…

EasyExcel 几十万导入报错问题——java.lang.NoClassDefFoundError

EasyExcel 报错 NoClassDefFoundError org/ehcache/config/builders/CacheManagerBuilder 特此郑重声明!该文章是原创作品,小编编写实属不易 ,帮忙点赞关注一下~转载小伙伴请注明出处! EasyExcel 导入几十万数据报错 今天在执行…

【java实现Word模板导出】Xdocreport和Freemaker

如果只是生成简单的word文件的话可以使用 Hutool 上手简单使用方便。 但如果需要导出内容比较复杂的word文件的话用那个就不合适了,这时候就需要Xdocreport这玩意了。 制作模板 新建一个word文档在需要插入变量的地方使用快捷键 Crtl F9 来生成一个域 然后右键单…

【软件工具】Source Insight 4.0编辑keil工程代码

0.前言 最近在学习过程中,发现诸多课程老师均使用Source Insight 4.0进行开发演示,为了方便课程的学习,也为了提高个人开发水平及效率,故学习Source Insight 4.0软件,此文章主要作为软件使用的流程总结,同…

第十一章 - 模糊匹配(like)、正则匹配(REGEXP)、文本处理函数、时间处理函数

第十一章 - 模糊匹配(like)、正则匹配(REGEXP)、文本处理函数、时间处理函数模糊匹配和正则匹配like%通配符_通配符REGEXP 正则匹配文本拼接concat()substring()substring_index()一些文本处理函数时间处理…

Autosar MCAL-ADC配置PWM硬件触发采样

文章目录前言ADC配置AdcGroupRequestSourceAdcGroupTriggSrcAdcHwExtTrigSelectAdcHwGatePinAdcGeneral-AdcHwTriggerApiAdcHwGateSignalAdcHwTrigSignalAdcHwTrigTypeGtmGtmConnectionsPWM实际使用总结前言 在实际项目开发过程中,关于ADC采样,大部分使…

存储器与cpu的连接

1. 只读存储器 只读存储器中一般用于保存系统程序或者系统的配置信息; 早期的只读存储器, 在厂家就写好了内容改进1, 用户可以自己写, 一次性改进2, 可以多次写-- 要能对信息进行擦除;改进3,  电可擦…

【Leetcode 剑指Offer】第3天 字符串(简单)

字符串剑指 Offer 05. 替换空格字符串构造函数和析构函数操作函数剑指 Offer 58 - II. 左旋转字符串剑指 Offer 05. 替换空格 题:实现一个函数,把字符串 s 中的每个空格替换成"%20"。 class Solution { public:string replaceSpace(string s…

华为OD机试真题 用 C++ 实现 - 单词反转

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…

Springcloud-Seata分布式事务

目录 一、什么是Seata? 二、Seata的执行流程 三、搭建Seata服务器 四、配置微服务客户端 分布式事务的解决办法: 使用消息中间件手写代码解决分布式事务使用第三方组件--->Seata阿里巴巴的产品 这里只介绍通过第三方插件-----Seata解决分布式事务的问题 一、什…

说说 React 中 fiber、DOM、ReactElement、实例对象之间的引用关系

原生组件 fiber 原生组件 fiber,指的就是 type 为 “span”、“div” 的 fiber。 1.fiber.stateNode 指向真实 DOM 节点;2.node["__reactFiber$" randomKey] 指向对应 fiber,使用随机数是防止和业务代码的属性名冲突,…