2024pytest自动化测试框架学习(三)

news2024/10/5 16:27:34

 

在自动化测试中我们经常会针对某些测试方法编写前置测试数据,当测试方法执行完毕后再清理这些测试数据。之前我们接触的unittest框架中,使用setUp、tearDown方法来解决前置数据、后置数据销毁的问题。pytest为我们提供了更加强大灵活的fixtrue来完成该实现,本质上还是函数和装饰器的使用。

fixtrue基础使用

  • 该方法可任意命名没有setUp、tearDown的命名限制

  • 方法默认返回值是None,可配置返回值供测试方法使用

  • 该方法有执行范围,默认是function级别

下面是fixtrue的基础示例。

前置用例创建测试数据

 
  1. import pytest

  2. @pytest.fixture()

  3. def get_test_data():

  4. print("第一步:执行测试方法之前,会先调用我")

  5. return 1

  6. def test_assert_result(get_test_data):

  7. print("第二步:执行测试方法")

  8. assert 1 == get_test_data

  9. def test_assert_result2(get_test_data):

  10. print("第二步:执行测试方法")

  11. assert 1 == get_test_data


执行结果:

从上面的执行结果我们可以看到,每个测试方法执行前都会去先执行我们配置的前置方法来获取数据,这就是fixture最基本的作用。

配置多个fixture

  1. import pytest

  2. @pytest.fixture()

  3. def get_test_data():

  4. print("第一步:执行测试方法之前,会先调用我")

  5. return 1

  6. @pytest.fixture()

  7. def get_test_data2():

  8. print("第二个fixture配置:执行测试方法之前,会先调用我")

  9. return 2

  10. def test_assert_result(get_test_data, get_test_data2):

  11. print("第二步:执行测试方法")

  12. assert 1 == get_test_data

  13. assert 2 == get_test_data2

  14. def test_assert_result2(get_test_data):

  15. print("第二步:执行测试方法")

  16. assert 1 == get_test_data


执行结果:

我们为test_assert_result方法配置了2个前置方法,执行结果中可以看到成功接受了2个前置方法的返回结果。

后置数据销毁-yield

 
  1. import pytest

  2. @pytest.fixture()

  3. def get_test_data():

  4. print("第一步:执行测试方法之前,会先调用我")

  5. yield 1

  6. print("最后一步:执行数据清理操作")

  7. def test_assert_result(get_test_data):

  8. print("第二步:执行测试方法")

  9. assert 1 == get_test_data

  10. def test_assert_result2(get_test_data):

  11. print("第二步:执行测试方法")

  12. assert 1 == get_test_data


执行结果:

从执行结果上看每个方法都执行了最后一步的操作,在这里唯一需要注意的是返回值需要放在yield之后。

fixture作用域

通过scope参数我们可以指定作用域,前面我们也提到了默认情况下是function。

  • function 指每个测试函数都会去执行

  • class 指测试类只执行一次

  • module 指执行整个module文件时执行一次

  • session 指一次测试只执行一次

  1. import pytest

  2. @pytest.fixture(scope="function")

  3. def get_test_data():

  4. print("第一步:执行测试方法之前,会先调用我")

  5. yield 1

  6. print("最后一步:执行数据清理操作")

  7. @pytest.fixture(scope="class")

  8. def get_test_data():

  9. print("第一步:执行测试方法之前,会先调用我")

  10. yield 1

  11. print("最后一步:执行数据清理操作")

  12. @pytest.fixture(scope="module")

  13. def get_test_data():

  14. print("第一步:执行测试方法之前,会先调用我")

  15. yield 1

  16. print("最后一步:执行数据清理操作")

  17. @pytest.fixture(scope="session")

  18. def get_test_data():

  19. print("第一步:执行测试方法之前,会先调用我")

  20. yield 1

  21. print("最后一步:执行数据清理操作")

以上是fixture最基本的使用,大家可以在实际工作中实践应用。fixture还是很强大灵活的,那个测试方法需要就传递给那个方法,不需要的就不传递。fixture标记的方法也是支持参数传递的,赶快实践下吧!

下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

最后: 可以在公众号:程序员小濠 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

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

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

相关文章

《Solidity 简易速速上手小册》第8章:高级 Solidity 概念(2024 最新版)

文章目录 8.1 高级数据类型和结构8.1.1 基础知识解析更深入的理解实际操作技巧 8.1.2 重点案例:构建一个去中心化身份系统案例 Demo:创建去中心化身份系统案例代码DecentralizedIdentityContract.sol 测试和验证拓展案例 8.1.3 拓展案例 1:管…

MedicalGPT 训练医疗大模型,实现了包括增量预训练、有监督微调、RLHF(奖励建模、强化学习训练)和DPO(直接偏好优化)

MedicalGPT 训练医疗大模型,实现了包括增量预训练、有监督微调、RLHF(奖励建模、强化学习训练)和DPO(直接偏好优化)。 MedicalGPT: Training Your Own Medical GPT Model with ChatGPT Training Pipeline. 训练医疗大模型,实现了包括增量预训练、有监督微…

我为什么不喜欢关电脑?

程序员为什么不喜欢关电脑? 你是否注意到,程序员们似乎从不关电脑?别以为他们是电脑上瘾,实则是有他们自己的原因!让我们一起揭秘背后的原因,看看程序员们真正的“英雄”本色! 一、上大学时。 …

AP5216 降压恒流 全亮 半亮9W 车灯手电筒 性价比方案

AP5216 是一款 PWM工作模式, 高效率、外 围简单、内置功率管,适用于5V~100V输入的高 精度降压 LED 恒流驱动芯片。输出功率可达 9W,电流 1.0A。AP5216 可实现全亮/半亮功能切换,通过 MODE 切换:全亮/半亮 模式。AP5216…

《小程序商城定制:为你打造独特的线上商业帝国》

在当今数字化的时代,拥有一个定制的小程序商城已经成为了许多企业和个人创业者的首要任务。小程序商城作为一种轻量级的移动应用,具有无需下载、使用方便、传播迅速等优势,为用户提供了更加便捷的购物体验。而通过定制小程序商城,…

linux部署jenkins,支持jdk1.8

无废话,纯干活安装指令 本文前提条件需安装jdk8,安装参考:Linux配置jdk环境 下载资源 # 创建安装目录 mkdir -p /data/jenkins && cd /data/jenkins# 下载jenkins的war包,v2.346.x支持jdk1.8,高于这个版本的…

书生·浦语大模型实战营第四节课作业

基础作业 fintune过程 这里要注意下。 合并完参数的模型再进行网页部署时,需要用到InternLM源码,教程里面忽略了需要commit版本。通过以下命令转到所需版本,然后就可以看到web_demo.py。 cd InternLM git checkout 3028f07cb79e5b1d7342f4…

ping 8.8.8.8和ping www.baidu.com都OK,但是打不开网页

ping 8.8.8.8和ping www.baidu.com都OK,但是打不开网页 打开设置 -> 网络 找到IPV4, DNS栏输入 8.8.8.8 , apply 设置里界面变成这样 然后网页就能加载了

EPS-HiL转向硬件在环测试方案

1、项目背景 为提升研发能力,深入研究电动助力转向系统(EPS)功能,拟搭建EPS硬件在环测试设备。本设备可进行多种EPS相关测试实验。 2、需求分析 本方案中被测EPS如下图,为转向杆式电动助力转向器(C-EPS)&#xff0c…

Apache Flink连载(三十一):Flink基于Kubernetes部署(1)-Kubernetes介绍

🏡 个人主页:IT贫道-CSDN博客 🚩 私聊博主:私聊博主加WX好友,获取更多资料哦~ 🔔 博主个人B栈地址:豹哥教你学编程的个人空间-豹哥教你学编程个人主页-哔哩哔哩视频 目录

【多线程】Java线程的几种状态详解

线程的状态 1 观察线程的所有状态2 线程状态和状态转移的意义3 观察线程的状态和转移 1 观察线程的所有状态 线程的状态是⼀个枚举类型 Thread.State public class ThreadState {public static void main(String[] args) {for (Thread.State state : Thread.State.values()) …

利用故事推动企业变革:如何提升数据分析技能

单一的数据和表格尽管有算法的支撑,但在其表达方式上总会让人感到头疼。当我们需要深入了解企业的盈利能力,或是尝试评估业务的增长机会时,以往都会将精力全部放在分析数字、阅读信息、回顾历史和沟通交流之上,却忽略随之而生成的…

【中创:抢抓机遇,乘势而上】AI引爆算力需求,算力市场或将持续供不应求

2030年人类将迎来YB数据时代,全球算力总规模达到56ZFlops,其中智能算力达到52.5ZFlops,在算力需求中占绝对主导地位。 AI大模型迭代速度越来越快,各大厂商对智能算力投入大幅增加,支持存储和训练的高端AI服务器的需求…

基于Java+SpringBoot的旅游路线规划系统(源码+论文)

文章目录 目录 文章目录 前言 一、功能设计 二、功能实现 1.1 前端首页模块的实现 1.2 景点新闻 1.3 景点在线预订 1.4 酒店在线预订 1.5 管理员景点管理 1.6 管理员旅游线路管理 1.7 酒店信息管理 三、库表设计 前言 随着我国的经济的不断发展,现在的一些热门的景…

雷卯推荐多种8KW以上TVS二极管

一、 应用 TVS 二极管应用广泛,如消费电子产品、汽车工业、弹药、电信、航空航天工业和智能控制系统。 二、雷卯推荐系列产品列表: 以上仅是部分产品推荐,更多产品请联系leiditech 三、 封装尺寸数据 四、雷卯国产化替代表 部分展示 上海…

深究 DevOps 与平台工程的区别

今天,我们将讨论平台工程和 DevOps 的关系。尽管这两个概念有一些共同点,但它们仍然是截然不同的,我们将具体了解它们之间的区别。本文旨在解释当代软件工程中的这两个基本概念。通过实际案例,我们将分别说明这两个方法如何塑造了…

svn tortoiseSVN没有显示更新后的log

同事更新了svn提交 自己打开文件发现文件没有更新,而且log显示也没用更新 需要勾选log界面下的这个 显示同事提交合并的修改

自学python?一般人我还是劝你算了吧!

自我介绍 本人其实属于一枚屌丝,在真正开始学python之前,其实也就是对电脑的认知只限于上个网,玩个office办公软件。废话不多说,我为啥说自学python,一般人我还是劝你算了吧。因为我就是那个不一般的人。 基础真的很…

JavaScript中手动实现Array.prototype.map方法

在前端开发中,我们经常需要对数组进行操作和处理。在JavaScript中,数组是常用的数据类型之一。而数组的map方法可以将一个数组中的每个元素都进行某种操作,并返回一个新的数组。今天,我们就来手动实现JavaScript中数组原型的map方…

3dmax渲染图片不清晰和是结果是灰图怎么回事?图片颜色位数介绍

3ds Max这类三维建模和渲染软件中在选择和设置渲染结果的输出格式时有时候需要设置的一个选项是“图像控制”。 如果图片格式设置的颜色位数不对,那么结果也会不清晰和灰色哦! 比如选择TIF格式时 就需要设置存图位数。 那个这个选项该怎么选择设置呢&a…