精通自动化,Pytest自动化测试框架-fixture用例的前后置(实现)

目录:导读

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


前言

测试用例实现前后置,有多种方法。在实际编写测试脚本时,要根据实际情况选择

1、xunit类型

def setup_function()
def teardown_function()def setup_method(self)
def teardown_method(self)@classmethod
def setup_class(cls)
@classmethod
def teardown_class(cls)

2、unittest类型

#先要在class类中继承unittest.testcase
@classmethod
def setUpClass(cls)
@classmethod
def tearDownClass(cls)
def setup(self)
def tearDown(self)

3、pytest中的fixture类型
定义夹具

@pytest.fixture
def fixture_func():print('前置条件')yield  #这里可以有返回值,用于夹具的继承print('后置条件')
@pytest.fixture(scope,autouse)

scope的取值有:
function 默认范围,函数范围,在测试完成后结束 【 类似setup/teardown】
class 在类中最后一个测试完成后结束 【类似setupClass/teardownClass】
module 在模块中最后一个测试完成后结束
package 在包中的最后一个测试完成后结束
session 在一次会话中的最有一个测试完成后结束【一次pytest叫做一次会话】

autouse取值默认False
模块级别/包级别/会话级别需要加

使用夹具

@pytest.mark.usefixtures("fixture_func")
def test():print('开始测试')

共享夹具
共享夹具都放在conftest.py文件中;
会从测试文件开始,一层一层目录查找conftest.py文件;
测试用例可以直接调用共享夹具中的夹具,不需要额外导入;

#conftest.py文件,在该文件下的夹具为共享夹具
@pytest.fixture(scope='class')
def driver(pytestconfig):browser = pytestconfig.getoption('--browser')if browser == 'edge':s = Service(executable_path=settings.BROWSER_DRIVERS['edge'])with webdriver.Edge(service=s) as wd:  # 最大化浏览器# wd.maximize_window()yield wdif browser == 'chrome':s = Service(executable_path=settings.BROWSER_DRIVERS['chrome'])with webdriver.Chrome(service=s) as wd:  # 最大化浏览器# wd.maximize_window()yield wdif browser == 'firefox':s = Service(executable_path=settings.BROWSER_DRIVERS['firefox'])with webdriver.Firefox(service=s) as wd:  # 最大化浏览器# wd.maximize_window()yield wd

4、夹具多重使用的执行步骤

先执行范围大的,再执行范围小的
同级别,按照先后顺序去调用夹具

5、夹具的继承

只能从大范围或者同范围的继承
夹具继承后,可以得到夹具到返回值

例子:

#conftest.py 共享文件
@pytest.fixture(scope='class')
def driver(pytestconfig):browser = pytestconfig.getoption('--browser')if browser == 'edge':s = Service(executable_path=settings.BROWSER_DRIVERS['edge']) #webdriver存放路径需要自己修改with webdriver.Edge(service=s) as wd:  # 最大化浏览器# wd.maximize_window()yield wd      #这里有返回值,用于夹具的继承if browser == 'chrome':s = Service(executable_path=settings.BROWSER_DRIVERS['chrome'])with webdriver.Chrome(service=s) as wd:  # 最大化浏览器# wd.maximize_window()yield wdif browser == 'firefox':s = Service(executable_path=settings.BROWSER_DRIVERS['firefox'])with webdriver.Firefox(service=s) as wd:  # 最大化浏览器# wd.maximize_window()yield wd
#测试用例文件
class TestMaxWindow():def test_maxWindow(self, driver):#执行步骤:#1.会在共享夹具中找到driver,yield之前的为前置操作#2.执行到yield,夹具有返回值则得到参数#3.在该测试用例中可以用夹具返回的参数#4.测试用例结束后,继续执行夹具中的后置操作driver.maximize_window()
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

不论遇到多大的困难,都要保持坚定的信念和勇往直前的勇气,只有不断奋斗,才能超越自我,创造属于自己的辉煌人生,让梦想照亮前行的路途。

在追寻梦想的道路上,不要畏惧困难与挫折,坚持奋斗,相信自己的能力和潜力,只有不断努力,才能创造属于自己的辉煌,绽放出人生最美的光芒。

无论前方道路多么曲折艰辛,坚持奋斗的心将永不熄灭,相信自己的实力与潜力,勇敢追逐梦想,只有不断努力,才能创造属于自己的辉煌人生,成就伟大的未来。

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

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

相关文章

一条SQL同时获取总数和分组数量

示例sql如下 select col1,col2,col3,count(*) from table1 t1 join table2 t2 on t1.col1 t2.col1 where 11 group by col1,col2,col3这里是整体数量count,当有一个col4,以它的值为分组条件进行分组,一般情况下,应为 select co…

crmeb部署

安装宝塔 教程 安装所需要的软件 php mysql5.7 redis fileinfo nginx 安装crmeb 重启mysql 前台http://192.168.216.128/ 后台http://192.168.216.128/admin admin admin888登录 访问前台

自动化运维工具--saltstack部署及使用

目录 一、saltstack简介 1、介绍 2、Salt的核心功能 3、saltstack通信机制 二、saltstack部署 1、部署环境 2、配置yum源 3、安装master与minion 4、连接认证master和minion 三、salt运行 1、执行格式 2、实操演示 一、saltstack简介 1、介绍 saltstack是一个配置管…

2023国际数模A题-购物评论的数据分析【具体分析+代码 持续更新!!】

问题1:请建立文本分析的数学模型 商品评论,统计评论中单词的出现频率,利用附录一和附录二中的评论绘制单 词云图,并进行数据和信息的可视化分析。 解答: 建立文本分析的数学模型 首先,我们需要对商品评论进行文本处理,包括去除停用词、词干提取、词义还原等操作。然后…

连锁反应开始了!Linux 发行版迎新变化!

任何企业都有合法权利捍卫其模型和产品。撇开大量不真正了解开源许可证如何工作的人不谈,我们的印象是,有很多人觉得仅仅因为这是Linux,他们就有某种权利免费获得它。但事实上,他们没有。这不是自由软件中的“自由”的意思&#x…

浮点型在内存中的存储

目录 1.浮点数是什么? 2. 浮点数存储规则 1.浮点数是什么? 就是数学中的小数。 常见的浮点数: 3.14159 1E10(1*10^10) 浮点数家族包括: float、double、long double 类型。 浮点数表示的范围&#x…

【微信小程序】要在两个<view>之间绘制一条分割线,使用border属性和样式

要在两个<view>之间绘制一条分割线&#xff0c;可以使用border属性以及适当的样式设置。以下是一个示例代码&#xff1a; <view class"container"><view class"content">内容</view><view class"divider"></v…

前端 | ( 十二)CSS3简介及基本语法(中)| 变换、过渡与动画 | 尚硅谷前端html+css零基础教程2023最新

学习来源&#xff1a;尚硅谷前端htmlcss零基础教程&#xff0c;2023最新前端开发html5css3视频 系列笔记&#xff1a; 【HTML4】&#xff08;一&#xff09;前端简介【HTML4】&#xff08;二&#xff09;各种各样的常用标签【HTML4】&#xff08;三&#xff09;表单及HTML4收尾…

iOS and Andriod兼容问题汇总,持续添加,期待一起进步

以下是一些具体的元素和方法在iOS和Android之间可能存在的兼容性问题及其解决方案&#xff1a; fixed定位在iOS上的兼容问题&#xff1a;在iOS中&#xff0c;使用fixed定位时会出现滑动卡顿的现象。解决方案&#xff1a;使用transform: translateZ(0)或者-webkit-overflow-scro…

【C++基础(六)】类和对象(中) --构造,析构函数

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:C初阶之路⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习C   &#x1f51d;&#x1f51d; 类和对象-中 1. 前言2. 构造函数3. 构造函数的特性4…

分布式系统的应用程序性能监视工具-skywalking

分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。提供分布式链路日志追踪、剖析、服务网格遥测分析、度量聚合和可视化一体化解决方案。 在应用系统进行实时监控,实现对应用性能管理和故障定位的系统化解决方案中常用的…

数据结构问答8

查找 1. 一些基本概念 关键字:能唯一标识该元素 查找:给定值k,在含n个元素的表中找出关键字==k的元素。找到返回其位置信息,否则返回-1。 动、静态查找表:查找同时对表进行修改(插入、删除等),相应的表为动态,否则为静态。 内、外查找:整个查找过程在内存中进行…

爬虫小白-如何辨别是否有cookie反爬案例

目录 一、Cookie介绍二、cookie生成来源区分查找三、如何判断是否有cookie反爬四、来自服务器生成的cookie反爬解决方法五、来自js生成的cookie反爬解决方法 一、Cookie介绍 先推荐该篇文章简单了解Cookie、Session、Token、JWT1、cookie的类型&#xff1a;会话cookie和持久co…

OpenCV——报错解决:error: ‘VideoCapture’ was not declared in this scope

代码&#xff1a; #include <opencv2/opencv.hpp>cv::Mat frame; std::string video_path "XXX"; VideoCapture capture(video_path); capture >> frame;原因&#xff1a; 未使用cv的命名空间 解决办法&#xff1a; 在cv::Mat frame;语句前面加入&a…

[驱动开发]字符设备驱动应用——点灯

点亮开发板stm32mp157的三盏灯 //头文件 #ifndef __LED_H__ #define __LED_H__//封装GPIO寄存器 typedef struct { volatile unsigned int MODER; // 0x00volatile unsigned int OTYPER; // 0x04volatile unsign…

Langchain 的 Conversation buffer window memory

Langchain 的 Conversation buffer window memory ConversationBufferWindowMemory 保存一段时间内对话交互的列表。它仅使用最后 K 个交互。这对于保持最近交互的滑动窗口非常有用&#xff0c;因此缓冲区不会变得太大。 我们首先来探讨一下这种存储器的基本功能。 示例代码&…

C语言——指针和数组练习题解析

指针和数组习题 前言&#xff1a;一、一维数组二、字符数组三、二维数组四、指针题目 前言&#xff1a; 学习了指针的初阶和进阶后&#xff0c;已经对指针有了一定了解。下面就需要做题目&#xff0c;去巩固所学的知识。 对数组名的理解&#xff1a; 数组名是数组首元素的地址…

Linux Day01

目录 一、Linux终端介绍 二、Linux目录介绍 1.目录结构 2.常见目录说明 3.绝对路径与相对路径 4.家目录 一、Linux终端介绍 二、Linux目录介绍 Linux目录&#xff1a;是从根目录"/"开始的 是一棵倒着的树 1.目录结构 2.常见目录说明 目前记住 bin 存放常用命…

跨境独立站如何应对恶意网络爬虫?

目录 跨境出海独立站纷纷成立 爬虫威胁跨境电商生存 如何有效识别爬虫&#xff1f; 技术反爬方案 防爬虫才能保发展 中国出海跨境电商业务&#xff0c;主要选择大平台开设店铺&#xff0c;例如&#xff0c;亚马逊、eBay、Walmart、AliExpress、Zalando等。随着业务的扩大&…

mysql or 阿里云RDS 随记

文章目录 函数SQL优化表分区索引水位线执行计划&#xff0c;explain 函数 SQL优化 表分区 索引 水位线 执行计划&#xff0c;explain EXPLAIN 是 MySQL 中的一个关键字&#xff0c;用于解释查询执行计划&#xff0c;帮助你理解查询是如何执行的以及使用了哪些索引。执行 …