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

news2024/11/26 18:50:37

目录:导读

    • 前言
    • 一、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 wd
     if browser == 'chrome':
        s = Service(executable_path=settings.BROWSER_DRIVERS['chrome'])
        with webdriver.Chrome(service=s) as wd:  # 最大化浏览器
            # wd.maximize_window()
            yield wd
     if 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 wd
    if 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.coloradmin.cn/o/782082.html

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

相关文章

软件项目验收测试报告-软件项目验收流程

目录 一、什么是项目验收? 二、软件项目验收材料的准备 三、软件项目验收,按照验收的流程,可分为验收准备、初步验收、最终验收和项目交接四个部分。 对甲方而言,项目验收是正式接受项目成果,将项目从建设转为运营。…

视频增强技术-去噪

本文介绍了关于视频增强技术的相关方法包括传统方法和基于深度学习的方法,并给出了他们的对比实验结果,最后对它们简单的做了总结,文中有一些图片和总结来自于网上其他博主的文章,已在文中标记并给出了相关的原文链接,…

JAVA基础-集合(List与Map)

目录 引言 一,Collection集合 1.1,List接口 1.1.1,ArrayList 1.1.1.1,ArrayList的add()添加方法 1.1.1.2,ArrayList的remove()删除方法 1.1.1.3,ArrayList的contai…

机器学习之主成分分析(Principal Component Analysis)

1 主成分分析介绍 1.1 什么是主成分分析 主成分分析(Principal Component Analysis)简称PCA,是一个非监督学习的机器学习算法,主要用于数据的降维,对于高维数据,通过降维,可以发现更便于人类理…

(css)自定义el-dialog对话框添加背景图片

(css)自定义el-dialog对话框添加背景图片 效果: // 文件管理对话框 /deep/ .el-dialog {background: transparent;background-image: url("../assets/image/file-upload-background.png");background-size: 100% 100%; } // 头部 /deep/ .el-dialog__titl…

2024考研408-操作系统 第五章-输入输出IO管理 学习笔记

文章目录 一、I/O管理概述1.1、I/O设备的概念与分类1.1.1、什么是I/O设备?1.1.2、I/O设备的分类:按照使用特性1.1.2、I/O设备的分类:按传输速率分类1.1.3、I/O设备的分类:按照信息交换的单位分类知识点回顾与重要考点 1.2、I/O控制…

【Linux】udp客户端windows版以及Tcp服务器的实现

windows版客户端更适合大多数人~ 文章目录 一. udp客户端windows版二.Tcp服务器的实现总结 一、udp客户端windows版 首先我们将上一篇文章中实现的udp大型聊天室的代码进行修改,注意我们只修改服务端代码将代码修改的很简单就好,因为我们只是做一个如何…

spring-事务

spring-事务 事务( transaction)是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成,它具有ACID特性。 为了在spring中…

UE特效案例 —— 骷髅爆点

一,环境配置 创建默认地形Landscape,如给地形上材质需确定比例;添加环境主光源DirectionalLight,设置相应的强度和颜色;添加天光反射SkyLight,用于天空反射;添加指数级高度雾ExponentialHeightF…

C++笔记之循环引用与环状引用

C笔记之循环引用与环状引用 code review! 文章目录 C笔记之循环引用与环状引用1.C循环引用和环状引用描述的是同一种现象吗?2.环状引用3.环状引用现象举例——常见环状引用4.解决环状引用——使用前向声明5.环状引用现象举例——使用对象本身可能造成环状引用 1.C循环引用和…

MySQL_4

目录 一、日志 1、错误日志 2、二进制日志 2.1 介绍 2.2 格式 2.3 删除 3、查询日志 4、慢查询日志 二、主从复制 1、概述 2、原理 3、搭建 三、分库分表 1、介绍 1.1背景 1.2拆分策略 1.3垂直拆分 1.4水平拆分 1.5实现技术 2、Mycat概述 2.1 介绍 2.2 安装 2.3…

每日一题2023.7.22|链表的基本操作

链表的基本操作 题目描述 考察链表的基本操作 输入 输入数据只有一组,第一行有n1个整数,第一个整数是这行余下的整数数目n,后面是n个整数。这一行整数用来初始化列表的,并且输入的顺序与列表中的顺序相反,也就是说如果…

htmlCSS-----浮动

目录 前言: 浮动 1.浮动的效果 2.浮动的特点 3.浮动的写法 4.浮动的原理 5.浮动的作用 6.案例 7.浮动的缺陷与解决方式 浮动问题 解决方式 8.补充说明 前言: 浮动是html里面重要的一部分,前面我们学习了三种元素的类型(…

element中table的表格更新数据之后保留原来的勾选状态

reserve-selection: 仅对 typeselection 的列有效&#xff0c;类型为 Boolean&#xff0c;为 true 则会在数据更新之后保留之前选中的数据&#xff08;需指定 row-key&#xff09; <el-table ref"table" :data"DataList" :row-key"rowKey"&g…

使用rknn-toolkit2把YOLOV5部署到OK3588上

使用rknn-toolkit2把YOLOV5部署到OK3588上 虚拟环境搭建软件包安装在PC机上运行yolov5目标检测 虚拟环境搭建 首先在PC的ubuntu系统安装虚拟环境&#xff1a; 我的服务器是ubuntu18.04版本&#xff0c;所以安装python3.6 conda create -n ok3588 python3.6 需要键盘输入y&…

【博客681】k8s list机制与resourceVersion语义

k8s list机制与resourceVersion语义 K8s 架构&#xff1a;环形层次视图 对于 K8s 集群&#xff0c;从内到外的几个组件和功能&#xff1a; etcd&#xff1a;持久化 KV 存储&#xff0c;集群资源&#xff08;pods/services/networkpolicies/…&#xff09;的唯一的权威数据&…

实例023 建立字体形状窗体

实例说明 大家都见过不规则形状的窗体吧&#xff0c;那么如何制作一个文字形的窗体呢&#xff1f;文字形窗体一般应用在屏幕提示中&#xff0c;如收款机屏幕等。运行本例&#xff0c;效果如图1.23所示。 技术要点 以前&#xff0c;创建字体形窗体是一个既费时又费人力的过程&…

K8S初级入门系列之七-控制器(Job/CronJob/Daemonset)

一、前言 前一章节我们介绍了RC&#xff0c;RS控制器&#xff0c;其主要针对在线业务Pod部署&#xff0c;比如nginx&#xff0c;这些业务是需要确保7*24持续运行的&#xff0c;还有一类离线业务&#xff0c;比如定时任务&#xff0c;大数据离线计算等&#xff0c;在有任务的才需…

在命令行模式、eclipse console下执行Java程序输入中文的几种情况尝试

介绍 在命令行模式下执行Java程序&#xff0c;如果输入中文&#xff0c;经常会出现和代码中的解码字符集不匹配的情况&#xff0c;导致结果不正确。 在命令行模式下执行Java程序&#xff0c;输入中文&#xff0c;其实是用某种字符集编码成字节流&#xff0c;Java程序读取该字节…

rk3588 双HDMI冲突问题与HDMI不能热插拔问题

问题一:HDMI不能热插拔问题 现象 rk3588在开发时现在发现只能在插入HDMI时上电才能输出信号,而当开机之后,再插入HDMI显示器则无信号。 分析 通过kernel显示,在开机后,插拔HMDI是有log提示的,说明内核能够检测到HDMI的插拔动作。 首先先排查软件问题,尝试重启显示进…