Pytest自动化测试框架介绍
1、什么是单元测试框架
单元测试是指在软件开发当中,针对软件的最小单位(函数,方法)进行正确性的检查测试。
2、单元测试框架主要做什么
-
测试发现:从多个文件里面去找到我们需要的测试用例。
-
测试执行:按照一定的顺序和规则去执行测试用例,并生成结果。
-
测试判断:通过断言判断预期结果和实际结果的差异。
-
测试报告:统计测试进度,耗时,通过率等数据,并生成测试报告。
3、单元测试框架和自动化测试框架有什么关系
(1)自动化测试框架作用:
-
提高测试效率,降低自动化用例的维护成本。
-
减少人工干预,提高测试的准确性,增加代码的重用性。
-
核心思想是让不懂代码的人,也能够通过这个框架去实现自动化测试。
(2)Pytest单元测试框架和自动化测试框架的关系
单元测试框架:只是自动化测试框架中的组成部分之一。
pom设计模式、数据驱动、关键字驱动、全局配置文件的封装、日志监控、Selenium和Requests的二次封装、报告邮件、断言体系的设计封装等,都是自动化测试框架中的组成部。
4、Pytest测试框架说明
Pytest是Python的⼀种单元测试框架,全功能且非常成熟,同⾃带的Unittest测试框架类似,相⽐于Unittest框架使⽤起来更简洁,效率更⾼。
Pytest测试框架,主要有以下几个特点:
-
Pytest是一个非常成熟的Python的单元框架,比Unittest更灵活,容易上手。
-
Pytest支持参数化配置。
-
Pytest能够支持简单的单元测试和复杂的功能测试,还可以和Selenium,Requests,Appium结合实现web自动化,接口自动化,APP自动化。
-
执行测试过程中可以将某些测试跳过,或者对某些预期失败的case标记成失败,也支持重复执行失败的case。(跳过用例和reruns失败用例重试)
即:支持测试用例的
skip和xfail处理。 -
Pytest可以很好的和Jenkins进行持续集成。
-
Pytest可以和
allure生成非常美观的测试报告。 -
在Pytest框架下可以执行Unittest框架的用例。
-
Pytest有很多非常强大的第三方插件,并且这些插件能够实现很多实用的操作。
并且也可以自定义Pytest插件。
Pytest官方文档:https://docs.pytest.org/en/latest/contents.html
5、Pytest框架和Unittest框架区别
(1)Unittest
Unittest是Python标准库中自带的单元测试框架,Unittest有时候也被称为PyUnit,就像JUnit是Java语言的标准单元测试框架一样,Unittest框架则是Python语言的标准单元测试框架。
Unittest支持自动化测试,测试用例的初始化、关闭和测试用例的聚合等功能,它有一个很重要的特性:它是通过类(class)的方式,将测试用例组织在一起。
(2)Pytest
Pytest是Python的另一个第三方单元测试库。它的目的是让单元测试变得更容易,并且也能扩展到支持应用层面复杂的功能测试。
(3)区别
1)用例编写规则:
-
Unittest测试框架:1、提供
test.cases,test suites,test fixtures,test rurner相关类,让测试更加明确、方便、可控。2、测试文件编写前,必须先导入
Unittest测试框架,import unittest。3、测试类必须继承
unittest.TestCase类,且测试类要Test_开头。(可去掉横线,下同)4、测试方法要以
test_开头。5、测试类必须要用
unittest.main()方法执行。 -
Pytest测试框架:1、基于Unittest的扩展框架,比Unittest更简洁、更高效。
2、测试文件必须
test_开头。3、测试类命名必须以
test_开头。4、测试方法必须
test_开头(函数也一样)。(规则可自定义。)
-
总结:
Unittest:用例格式复杂,不能兼客Pytest用例。Pytest:用例格式简单,可以兼容Unittest用例。
2)用例的前置和后置:
-
Unittest测试框架:提供了
setUp/tearDowm方法,只能针对所有用例。 -
Pytest测试框架:1、Pytest提供了模块级、函数级、类级、方法级的
setup/teardown,比Unittest的setup/tearDowm方法更活。-
模块级
setup_module/teardown_module:开始于模块始末,全局。 -
类级
setup_class/teardown_class:只在类中前后运行一次(类中)。 -
函数级
setup_function/teardow_function:只对函数用例生效(不在类中)。 -
方法级
setup_method/teardown_method:开始于方法始末(在类中)。 -
类里面的
setup/teardown:运行在调用方法的前后。
2、函数前加
@pytest.fixtures()装饰器,在测试用例中使用Fixture函数。可作用于
function\module\class\session中。fixture相对于setup/teardown来说的优势,如下:-
命名方式灵活,不局限于
setup/teardown。 -
conftest.py配置里可以实现数共享,无需import就可自动找到配置数据,可供多个.py文件调用。 -
scope="module",可以实现多个.py文件跨文件共享前置。 -
scope="session",可以实现多个.py文件跨文件使用一个session来完成用例。 -
使用
yeild返回,相当于teardown的作用。
-
3)参数化:
-
Unittest测试框架:结合DDT实现参数化。 -
Pytest测试框架:直接使用@pytest.mark.parametrize装饰器。
4)断言:
-
Unittest测试框架:可使用提供的assertEqual,assertIn、assertTrue,assertFalse断言方法。 -
Pytest测试框架:直接使用Python语言内置的assert表达式。
5)用例分类执行:
-
Unittest测试框架:默认执行全部用例,可以通过加载testsuite执行部分模块的用例。 -
Pytest测试框架:可以通过@pytest.mark来标记测试用例,执行命令前加上参数"-m",即可运行标记的用例。
6)失败重运行:
-
Unittest测试框架:无。 -
Pytest测试框架:支持用例执行失败重跑,提供了pytest-rerunfailures插件。
7)报告:
-
Unittest测试框架:使用HTMLTestRunnerNew库生成测试报告。 -
Pytest测试框架:使用pytest-HTML、allure插件生成测试报告。
这可能是B站最详细的pytest自动化测试框架教程,整整100小时,全程实战!!!
相关文章:
Pytest自动化测试框架介绍
1、什么是单元测试框架 单元测试是指在软件开发当中,针对软件的最小单位(函数,方法)进行正确性的检查测试。 2、单元测试框架主要做什么 测试发现:从多个文件里面去找到我们需要的测试用例。 测试执行:按…...
基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖(五)
公共字段自动填充 1.1 问题分析1.2 实现思路1.3 代码开发1.3.1 步骤一1.3.2 步骤二1.3.3 步骤三 1.4 功能测试 1.1 问题分析 在前面我们已经完成了后台系统的员工管理功能和菜品分类功能的开发,在新增员工或者新增菜品分类时需要设置创建时间、创建人、修改时间、修…...
Oracle 监控的指标有哪些和oracle巡检的内容
日常监控指标: 性能指标: 查询响应时间CPU利用率内存利用率磁盘 I/O 活动网络吞吐量 空间管理: 表空间使用率数据文件增长情况Undo 表空间使用率临时表空间使用率 会话和连接: 活跃会话数等待事件监控连接数和连接池效率 数据库对…...
Uniapp有奖猜歌游戏系统源码 带流量主
有奖猜歌游戏是一款基于uni-app、uniCloud、uniAD 开发的小游戏,通过猜歌曲、观看广告赚取现金奖励。 本游戏基本特征如下: 1、玩家可以通过猜歌、做任务等方式直接获取现金奖励 2、玩家可以通过猜歌、拆红包、做任务等方式获取金币奖励,当金币累积到一定数量可以兑换现金 3…...
【算法与数据结构】前言
算法与数据结构是OI中不可或缺的一部分。 今天,让我们走进算法与数据结构独特世界。 性能 算法与数据结构都是完成任务的方法。 方法就要有性能。 有效率就有描述性能的语言。 这就是复杂度。 复杂度的描述 由于复杂度描述的是大致性能,所以采用的是…...
(六)什么是Vite——热更新时vite、webpack做了什么
vite分享ppt,感兴趣的可以下载: Vite分享、原理介绍ppt 什么是vite系列目录: (一)什么是Vite——vite介绍与使用-CSDN博客 (二)什么是Vite——Vite 和 Webpack 区别࿰…...
贝加莱MQTT功能
贝加莱实现MQTT Client端的功能库和例程 导入库和例程,AS Logical View中分别通过Add Object—Library,Add—Program插入MQTT库和例程。 将例程Sample放置于CPU循环周期中 定义证书存放路径,在AS Physical View 中,右击PLC—Con…...
基于JavaWeb+SSM+购物系统微信小程序的设计和实现
基于JavaWebSSM购物系统微信小程序的设计和实现 源码获取入口前言主要技术系统设计功能截图Lun文目录订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 前言 第一章 绪 论 1.1选题背景 互联网是人类的基本需求,特别是在现代社会,…...
为什么需要Code Review?
1. Code Review 是什么? 代码审查(Code Review)是软件开发过程中对代码进行系统性检查和评审的一项活动。它是指团队成员之间相互检查彼此编写的代码,以确保代码质量、可读性和符合编码标准等。 2. Code Review 的必要性 ● 提…...
【计算机网络笔记】ICMP(互联网控制报文协议)
系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 计算机网络性能(2)…...
Git教程1:生成和提交SSH公钥到远程仓库
要生成 Git 的公钥并将其提交到远程仓库,你可以按照以下步骤进行操作: 打开命令行终端,并确保已经安装了 Git。在终端中输入以下命令来生成 SSH 密钥对:ssh-keygen -t rsa -b 4096 -C "your_emailexample.com"这将生成…...
贝茄莱BR AS实时数据采集功能
实时数据采集功能在PLC系统调试过程中,有助于调试人员对变量变化进行监测,通过波形对比,反应不同变量间的相互作用。该测试目的在于验证贝加莱系统组态软件的实时数据采集功能。 贝加莱系统组态软件提供Trace功能,连接PLC&#x…...
Git的基本操作以及原理介绍
文章目录 基本操作创建git仓库配置name和email .git目录的结构git add & git commit.git目录结构的变化 git追踪管理的数据git的版本回退回退的原理回退的三种情况 版本库中文件的删除git分支管理分支的删除合并分支时的冲突分支的合并模式分支策略git stash不要在master分…...
2023安全与软工顶会/刊中区块链智能合约相关论文
2023安全与软工顶会/刊中区块链智能合约相关论文 前言软工顶会ISSTAFSEASEICSE 软工顶刊TOSEMTSE 安全顶会S&PUSENIX SecurityCCSNDSS 前言 主要整理了2023年四大安全顶会、四大软工顶会和两个软工顶刊中,有关区块链智能合约的相关论文。 搜索方式是࿱…...
word文档转换为ppt文件,怎么做?
大家是否会遇到需要将word文档转换为ppt文件的情况?除了反反复复粘贴复制以外,还有其他方法可以转换文件格式,今天给大家分享word转换ppt方法。 首先我们先将word文件打开大纲模式 然后我们将文中的大标题设置为1级标题,副标题设…...
机器视觉选型-什么时候用远心镜头
物体厚 当被检测物体厚度较大,需要检测不止一个平面时,典型应用如食品盒,饮料瓶等。 物体位置变化 当被测物体的摆放位置不确定,可能跟镜头成一定角度时。 物体上下跳动 当被测物体在被检测过程中上下跳动,如生产线上下…...
quartz笔记
Quartz-CSDN博客 上面是Quartz的一些基本知识,如果对quartz的基本API不是很了解的话,建议先看下上面的 和Linux Crontab对比 1.执行粒度: Linux Crontab是进程级 quart是线程级 2.跨平台性: Crontab只能在Linxu运行 quart是java实现,可以跨平台 3.调度集上 Crontab的…...
ER 图是什么
文章目录 前言什么是 ER图ER 图实例简化的 ER 图总结 前言 产品经理在梳理产业业务逻辑的过程中,非常重要的一项工作就是梳理各个业务对象之间的关系。如果涉及对象很对的时候,没有工具支持的话很难处理清楚。今天我们就来介绍一个梳理业务对象关系的工…...
PLC电力载波通讯,一种新的IoT通讯技术
前言: PLC-IoT 是 PLC 技术应用在物联场景的创新实践,有效解决电力线路信号干扰、衰减问题,支持 IP 化通信能力,使能终端设备智能化,构建智慧边缘联接。PLC让传统IoT有了更多的连接可能: 电力线通信技术适用的场景包括电力配用电网络、城市智慧路灯、交通路口信号灯、园…...
Elasticsearch:通过摄取管道加上嵌套向量对大型文档进行分块轻松地实现段落搜索
作者:VECTOR SEARCH 向量搜索是一种基于含义而不是精确或不精确的 token 匹配技术来搜索数据的强大方法。 然而,强大的向量搜索的文本嵌入模型只能按几个句子的顺序处理短文本段落,而不是可以处理任意大量文本的基于 BM25 的技术。 现在&…...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...
UE5 音效系统
一.音效管理 音乐一般都是WAV,创建一个背景音乐类SoudClass,一个音效类SoundClass。所有的音乐都分为这两个类。再创建一个总音乐类,将上述两个作为它的子类。 接着我们创建一个音乐混合类SoundMix,将上述三个类翻入其中,通过它管理每个音乐…...
StarRocks 全面向量化执行引擎深度解析
StarRocks 全面向量化执行引擎深度解析 StarRocks 的向量化执行引擎是其高性能的核心设计,相比传统行式处理引擎(如MySQL),性能可提升 5-10倍。以下是分层拆解: 1. 向量化 vs 传统行式处理 维度行式处理向量化处理数…...
Git 切换到旧提交,同时保证当前修改不丢失
在 Git 中,可以通过以下几种方式切换到之前的提交,同时保留当前的修改 1. 使用 git checkout 创建临时分离头指针(推荐用于查看代码) git checkout <commit-hash>这会让你进入"分离头指针"状态,你可…...
动态生成element-plus的scss变量;SCSS中实现动态颜色变体生成
文章目录 一、动态css变量1.生成内容2.动态生成css变量2.1新增_color-utils.scss(不推荐)2.2新增_color-utils.scss(推荐)2.3theme.scss引入使用 一、动态css变量 1.生成内容 在我们修改element-plus主题色时候,会自…...
Vite 双引擎架构 —— Esbuild 概念篇
Vite 底层采用 双引擎架构,核心构建引擎是 Esbuild 和 Rollup,二者在开发和生产环境中分工协作,共同实现高性能构建。不可否认,作为 Vite 的双引擎之一,Esbuild 在很多关键的构建阶段(如依赖预编译、TS 语法转译、代码…...
大数据CSV导入MySQL
CSV Import MySQL 源码主要特性技术栈快速开始1. 环境要求2. 构建项目3. 使用方式交互式模式命令行模式编程方式使用 核心组件1. CsvService2. DatabaseService3. CsvImportService 数据类型映射性能优化1. 连接池优化2. 批量操作优化3. MySQL配置优化 配置说明application.yml…...
行业案例 | ASOS 借助 Azure AI Foundry(国际版)为年轻时尚爱好者打造惊喜体验
英国潮流电商ASOS借力微软Azure OpenAI,打造生成式AI购物新体验。平台整合大语言模型与推荐引擎,通过智能聊天交互帮年轻用户探索穿搭灵感,精准匹配近900个品牌的潮流单品,实现技术升级与个性化需求的双重突破。 使用 Azure Open…...
