超详细从入门到精通,pytest自动化测试框架实战-fixture高级进阶(十)

news2025/3/1 8:43:45

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

1、fixture的autouse参数

pytest当中的fixture, 默认情况下在定义好之后,需要测试用例/测试类主动请求使用,才会执行。

Pytest自动化测试框架:https://www.bilibili.com/video/BV18K411m7FH/

但是它有一个参数叫做autouse,默认是False。
关闭fixture的自动调用/自动执行功能。
如果设置autouse=True,则表示这个fixture在它的作用域范围内都会自动化执行。

分为2种情况,接下来举例说明。

第1种情况:当定义的fixture在测试类内部时
如果fixture设置了autouse=True,只会在测试类类内部生效。测试类以外的用例不受影响。

定义一个test_pytest-autouse.py,定义一个TestDemo类。

在其中定义2个fixture,一个设置了autouse=True,另外一个使用默认值False

请添加图片描述

第2种情况,在conftest.py当中的fixture设置autouse=True
conftest.py能影响到所有测试类/测试用例都会执行(依据fixture的作用域决定在哪个范围内执行)。

有如下的目录结构:

请添加图片描述

测试用例文件(test_autouse1.py,test_autouse2.py)当中,并没有使用@pytest.mark.usefixture(“func_fix”)来主动请求fixture.

请添加图片描述

conftest.py文件中的内容如下:

请添加图片描述

名为func_fix的fixture设置了autouse=True,它的作用域为function, 那么

在pytest20210301包下的每一个测试用例,在执行用例之前都会执行它的前置准备动作,在执行用例之后都会执行它的后置清理动作。

执行main.py(收集用例并执行)文件的结果如下:

请添加图片描述

基于以上情况,一般function、class、module级别的fixture,都不会去开启autouse=True

不同的测试用例/测试类,对于前置准备工作和后置清理工作的需求并不完全一样。

如果开启了autouse=True, 那么不管测试用例/测试类是否需要,都会去执行。

让测试用例/测试类根据实际需求主动来请求使用fixture才是正确之道。

2、session和module级别的fixture

pytest的fixture除了function和class以外,还有session和module级别。

session级别的fixture

这里的session是指测试会话。
它指的是:从pytest开始收集用例,到执行用例完成的整个过程,为一次会话。
比如收集到了100个测试用例要执行,那么session夹具夹的就是这100个用例。
比如收集到了30个测试用例要执行,那么session夹具夹的就是这30个用例。

由于它在所有用例执行的过程中,只执行一次。
如果定义了session级别的fixture,那说明你就是需要执行它的。
所以它是可以设置autouse=True的。
我们在做自动化测试的时候,如果有些前置准备工作是为整个测试会话做的,那么可以定义session级别的,比如清理/创建一些文件等。

还是以上面的用例结构为例,在conftest.py当中添加session级别的fixture,并设置为autouse=True:

请添加图片描述

执行结果如下:

请添加图片描述

module级别的fixture

module是指测试py文件,夹具夹的是整个test_*.py文件里的测试用例。

在test_*.py里,哪一行代码调用了module级别的fixture,那么夹的就是那行代码之后的所有测试用例。

举例来说明。还是以上面的用例结构为例,在conftest.py当中添加module级别的fixture:

请添加图片描述

在test_autouse2.py当中,调用module级别的fixture,但并未在第一个用例前调用。

请添加图片描述

执行结果如下:

请添加图片描述

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

不要让过去的失败束缚你前行的步伐,珍惜当下,追求卓越,坚定信念,勇往直前,你将会创造美好的明天,成就光辉人生!

只有不断突破自我,挑战极限,才能创造出真正的价值。勇于接受挑战,坚定信心,迎难而上,你将成为最优秀的自己,实现人生的辉煌!

成功的路上充满着艰辛和挫折,但只要心怀热忱,脚踏实地,坚持不懈,你一定能够战胜困难,迎接属于自己的辉煌人生!

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

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

相关文章

jQuery+AJAX技术(简单的用户注册功能)

目录1、jQuery是什么?2、AJAX是什么?3、jQuery与AJAX的关系?使用jQuery实现AJAX示例:4、jQueryAJAX技术实现用户注册验证功能。1、jQuery是什么? jQuery 是一个快速,小型且功能丰富的JavaScript库。它使 诸…

gradle编译项目报错Execution failed for task ‘:bootJar‘,‘:mainClass‘,‘:compileJava‘.

目录1.问题2.问题查找3.更多1.问题 idea导入Gradle管理的SpeingBoot多模块项目,依赖下载不下来,执行编译报错 报错信息: 2.问题查找 首先怀疑是不是idea的版本与gradle版本冲突,我用的是idea2022.3.3,gradle是7.5.…

做一个内心强大的人

想想类似如下这种心灵鸡汤,本不太愿意在这个平台发布,但是偶尔喝点又何尝不可! 语录摘抄/分享: 1、你开始炫耀自己,往往都是灾难的开始,就像老子在《道德经》里写到: 光而不耀,静水流深。 2、…

汽车电子相关术语介绍

一、相关术语介绍 1、汽车OTA 全称“Over-The-Air technology ”,即空中下载技术,通过移动通信的接口实现对软件进行远程管理,传统的做法到4S店通过整车OBD对相应的ECU进行软件升级。OTA技术最早2000年出现在日本,目前通过OTA方式…

HashMap源码解析超详细

HashMap源码详解1、概述2、源码解析1.HashMap底层存储结构问题一: 为什么直接就用数组呢?问题二:什么是红黑树呢?问题三:为什么不一下子把整个链表变为红黑树呢?2.HashMap的重要成员变量3.构造方法解析4.Put方法解析取…

渗透测试工具库-收藏版

1.前言 浩二一开始做渗透测试的时候收集超多的资料和工具,一直在文档里吃灰。今天全部放出来分享给大家,需要的自己收藏。 2.漏洞练习平台 WebGoat漏洞练习平台: https://github.com/WebGoat/WebGoat webgoat-legacy漏洞练习平台: http…

好程序员:Java书籍推荐,程序员必看的5本Java书籍,赶紧收藏!

今天好程序员给大家推荐5本Java书籍,各大高校都在使用(具体名单如下),所有学习Java的程序员都不应该错过! 第一本Java书籍《Java EE(SSM框架)企业应用实战》 本书全面介绍了JavaEE中MyBatis、Sp…

ChatGLM-6B论文代码笔记

ChatGLM-6B 文章目录ChatGLM-6B前言一、原理1.1 优势1.2 实验1.3 特点:1.4 相关知识点二、实验2.1 环境基础2.2 构建环境2.3 安装依赖2.4 运行2.5 数据2.6 构建前端页面3 总结前言 Github:https://github.com/THUDM/ChatGLM-6B 参考链接: ht…

“QT 快速上手指南“ 之 计算器(二)

文章目录前言一、QT 基本组件用法介绍:1. QLabel :2. QPushButton :3. QLineEdit:二、坐标系统三、窗口部件的大小设置1. setSize( ) 函数:2. resize( )函数:3. setFixedSize( )函数:4. setFixedWidth( ) 和 setFixedHeight( )函数…

大一被忽悠进了培训班

大家好,我是帅地。 最近我的知识星球开始营业,不少大一大二的小伙伴也是纷纷加入了星球,并且咨询的问题也是五花八门,反正就是,各种迷茫,其中有一个学弟,才大一,就报考培训班&#…

命令注入概述

概述命令注入即 Command Injection。是指在开发需求中,需要调用一些系统的命令来完成某些特定的功能。当未对用户输入的参数进行严格的过滤时,则有可能发生命令注入。攻击者可以通过提交恶意构造的参数破坏命令语句结构,从而达到执行恶意命令…

九大经典算法

1. 冒泡排序(Bubble Sort) 两个数比较大小,通过两两交换,像水中的泡泡一样,较大的数下沉,较小的数冒起来。 算法描述: 1.比较相邻的元素。如果第一个比第二个大,就交换它们两个&a…

界面组件DevExtreme v22.2 - Pivot Grid、UI组件升级

DevExtreme拥有高性能的HTML5 / JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NET Core,jQuery,Knockout等)构建交互式的Web应用程序。从Angular和Reac&#xff0c…

【Golang入门】简介与基本语法学习

下面是一篇关于Golang新手入门的博客,记录一下。(如果有语言基础基本可以1小时入门) 一、什么是Golang? Golang(又称Go)是一种由谷歌公司开发的编程语言。它是一种静态类型、编译型、并发型语言&#xff0…

从Hive源码解读大数据开发为什么可以脱离SQL、Java、Scala

从Hive源码解读大数据开发为什么可以脱离SQL、Java、Scala 前言 【本文适合有一定计算机基础/半年工作经验的读者食用。立个Flg,愿天下不再有肤浅的SQL Boy】 谈到大数据开发,占据绝大多数人口的就是SQL Boy,不接受反驳,毕竟大…

离散数学_第二章:基本结构:集合、函数、序列、求和和矩阵(1)

集合与函数2.1 集合 2.1.1 集合的基本概念 2.1.2 集合的表示方法 2.1.3 文氏图 2.1.4 证明集合相等 2.1.5 集合的大小 ——基 2.1.6 幂集 2.1.7 集族、指标集 2.1.8 笛卡尔积 2.1.9 容斥原理2.1 集合 2.1.1 集合的基本概念 定义1:集合 是不同对象的一个无序的聚…

23黑马vue

1、Vue概述 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width, …

铁路轨道不平顺数据分析与预测

铁路轨道不平顺数据分析与预测 1.引言 铁路轨道作为铁行车的基础设施&#xff0c;是铁路线路的重要组成部分。随着经济和交通运输业的发展&#xff0c;我国的铁路运输正朝着高速和重载方向迅速发展&#xff0c;与此同时&#xff0c;轨道结构承受来自列车荷载、运行速度的冲击…

Elasticsearch 学习+SpringBoot实战教程(三)

需要学习基础的可参照这两文章 Elasticsearch 学习SpringBoot实战教程&#xff08;一&#xff09; Elasticsearch 学习SpringBoot实战教程&#xff08;一&#xff09;_桂亭亭的博客-CSDN博客 Elasticsearch 学习SpringBoot实战教程&#xff08;二&#xff09; Elasticsearch …

QT笔记——QtXlsx操作Execl

使用第三方库QtXlsx来操作execl 环境&#xff1a;vs2019 qt5.12.2 第一步&#xff1a; 我们需要找到对应的下载QtXlsx的第三方库的下载路径&#xff1a; QtXlsx下载 第二步&#xff1a; 编译我们的QtXlsx&#xff0c;看了网上有很多中的例子&#xff0c;我这边暂时只举例 vsqt…