一篇打通,pytest自动化测试框架详细,从0到1精通实战(一)

目录:导读

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


前言

pytest单元测试框架

1、什么是单元测试框架?
单元测试是指在软件开发当中针对软件的最小单位(函数、方法)进行正确性的检查测试

2、单元测试框架有哪些?
Java:junit 和 testing
python:unittest 和 pytest

3、单元测试框架主要做什么?
测试发现:从多个文件里面去找到我们的测试用例
测试执行:按照一定的顺序和规则去执行,并生成结果
测试判断:通过断言判断预期结果和实际结果的差异
测试报告:统计测试进度、耗时、通过率、生成测试报告

单元测试框架和自动化测试框架有什么关系

1、什么是自动化测试框架?
把在自动化测试过程中用到的一些功能或者工具,分装成各个模块,包括如何进行自动化脚本编写以及分层功能的基础模块,进行持续集成、定时任务的管理模块,发送测试报告、进行测试结果统计分析的统计模块等,将这些模块组成一套可重用的骨架

2、作用
提高测试效率,降低维护成本;
减少人工干预,提高测试的准确性,增加代码的重用性;
核心思想是:让不懂代码的人也能够通过这个框架去实现自动化测试;

3、pytest单元测试框架和自动化测试框架的关系
单元测试框架:只是自动化测试框架中的组成部分之一
pom设计模式:只是自动化测试框架中的组成部分之一
数据驱动、关键字驱动、全局配置文件的封装、日志监控、selenium,requests二次封装、断言、报告邮件等等

pytest简介

pytest是一个非常成熟的python的单元框架,比unittest更灵活,容易上手;
pytest可以和selenium、requests、appium结合实现web自动化、接口自动化、app自动化;
pytest可以实现测试用例的跳过以及reruns失败用例重试;
pytest可以和allure生成非常美观的测试报告;
pytest可以和Jenkins持续集成;
pytest有很多非常强大的插件,并且这些插件能够实现很多的使用的操作;

# 如
pytest
pytest-html             # (生成html格式的自动化测试报告)
pytest-xdist         # (测试用例分布式执行,多CPU分发)
pytest-ordering          # (用于改变测试用例的执行顺序)
pytest-rerunfailures  # (用例失败后重跑)
allure-pytest         # (用于生成美观的测试报告)

安装pytest

安装pytest:

pip install pytest 

pytest的命名规则

模块名必须以test_开头或者以test_结尾;
测试类名必须以Test开头,并且不能有init方法;
测试方法必须以test开头;

D1

pytest测试用例的运行方式和执行顺序

1、运行方式
主函数模式
运行所有:pytest.main()
指定模块:pytest.main([“test_01.py”])
指定目录:pytest.main([“./test_py”])

通过nodeid指定用例运行: nodeid有模块名、分隔符、类名、方法名、函数名组成

pytest.main(["test_01.py::Test01Class"])  # 指定到类名
pytest.main(["test_01.py::Test01Class::test003"])  # 指定到方法名

2、命令行模式
运行所有:pytest
指定模块:pytest test_01.py
指定目录:pytest ./test_py

通过nodeid指定用例运行: pytest test_01.py::Test01Class::test0033.通过读取pytest.ini配置文件来运行pytest.ini这个文件他是pytest单元测试框架的核心配置文件

位置:一般放在项目的根目录
编码:必须是ANSI,可以使用notepad++修改编码格式
作用:改变pytest默认的行为
运行规则:不管是主函数的模式运行,还是命令行模式运行,都会去读取这个配置文件

D2

3、执行顺序
unittest:根据Ascll的大小来绝对的执行的顺序
pytest:默认从上到下
改变默认执行顺序:使用mark标记

@pytest.mark.run(order=3)

Pytest生成自带的html测试报告

安装pytest-html:

pip install pytest-html

1、直接执行pytest.main() 【自动查找当前目录下,以test开头的文件或者以test结尾的py文件】

pytest.main([‘--html=./report.html’]) 

D3

2、pytest.main(“模块.py”)【运行指定模块下,运行所有test开头的类和测试用例】

pytest.main(["--html=./report.html","模块.py"])

D4

3、运行指定模块指定类指定用例,冒号分割,并生成测试报告

pytest.main([--html=./report.html’,‘模块.py::::test_a_001'])

D5

4、Pytest调用语句

pytst.main(['-x','--html=./report.html','t12est000.py'])

-x:出现一条测试用例失败就退出测试
-s:显示print内容
-v:显示更详细的信息
-vs:这两个参数一起使用
-n:支持多线程或者分布式运行测试用例
-reruns NUM:失败用例重跑
-x:只要有一个用例报错,那么测试停止
–maxfail=2:出现两个用例失败就停止
-k:根据测试用例的部分字符串指定测试用例

5、使用@pytest.mark.skip()跳过该用例(函数)

class Test01Class():
    @pytest.mark.skip  # 跳过test001
    def test001(self):
        assert 5 == 4  # 断言

D6

6、pytest运行结果字符意义
.:点号,表示用例通过
F:表示失败 Failure
E:表示用例中存在异常 Error
S:表示跳过 skipped

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

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

在人生的舞台上,奋斗是最美的旋律。不畏困难,放飞梦想,用汗水浇灌成长的花朵。坚持信念,砥砺前行,只有不停奋斗,才能赢得属于自己的荣耀与成功。

付出不一定有回报,但不付出却一定没有收获。勇敢面对困难,坚持努力,无畏失败。奋斗的热血将点亮未来的路,只要你不停歇地前行,成功的曙光必将照耀你的人生。

每天都是一次重生的机会,勇往直前,追逐梦想吧!不管前方有多少艰难险阻,只要心怀信念,努力拼搏,你将绽放出耀眼的光芒,让世界为你而改变。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在CMamke生成的VS项目中插入程序

在主文件夹的CMakeLists.tex中加入SET(COMPILE_WITH_LSVM OFF CACHE BOOL "Compile with LSVM") 再添加IF(COMPILE_WITH_LSVM) MESSAGE("Compiling with: LSVM") ADD_DEFINITIONS(-DCOMPILE_WITH_LSVM) ADD_SUBDIRECTORY(LSVM) LIST(APPEND SRC LSVM_wrap…

烘焙光照贴图,模型小部分发黑

1.首先确定创建了光照贴图UV,其次确定不是溢色,这个最简单,所有模型材质设置为双面就可以,URP材质球的话这里就是设置双面 在scence界面Texel Validity模式里查看溢色,红色表示有溢色,绿色表示正常 2. 光照…

模拟实现定时器

前言 定时器的功能,就是一个类似于闹钟的到点运行的功能。 目录 前言 一、Timer 类 二、分析 Timer 类 三、完整代码实现 结语 一、Timer 类 Java库提供 Timer 类,实现 schedule 方法,给方法提供任务和时间,到时间就运行任务…

C++ 循环

有的时候,可能需要多次执行同一块代码。一般情况下,语句是顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。 编程语言提供了允许更为复杂的执行路径的多种控制结构。 循环语句允许我们多次执行一个…

设计模式行为型——访问者模式

目录 访问者模式的定义 访问者模式的实现 访问者模式角色 访问者模式类图 访问者模式举例 访问者模式代码实现 访问者模式的特点 优点 缺点 使用场景 注意事项 实际应用 访问者模式的定义 访问者模式(Visitor Pattern)属于行为型设计模式&am…

docker 安装mongodb 虚拟机安装mongodb

生产环境直接安装比较好,以及使用集群环境,本文仅测试交流使用,我用来写分布式im测试使用: nami-im: 分布式im, 集群 zookeeper netty kafka nacos rpc主要为gate(长连接服务) logic (业务&…

Java-运算符和控制语句(下)(基于c语言的补充)

输出到控制台 System.out.println(msg); // 输出一个字符串, 带换行 System.out.print(msg); // 输出一个字符串, 不带换行 System.out.printf(format, msg); // 格式化输出 从键盘输入 使用 Scanner 读取字符串/整数/浮点数 首先需要导入util包 自动导入util包 这里把回车看…

企业服务器数据库遭到malox勒索病毒攻击后如何解决,勒索病毒解密

网络技术的发展不仅为企业带来了更高的效率,还为企业带来信息安全威胁,其中较为常见的就是勒索病毒攻击。近期,我们公司收到很多企业的求助,企业的服务器数据库遭到了malox勒索病毒攻击,导致系统内部的许多重要数据被加…

简单线性回归:预测事物间简单关系的利器

文章目录 🍀简介🍀什么是简单线性回归?🍀简单线性回归的应用场景使用步骤:注意事项: 🍀代码演示🍀结论 🍀简介 在数据科学领域,线性回归是一种基本而强大的统…

Grounding dino + segment anything + stable diffusion 实现图片编辑

目录 总体介绍总体流程 模块介绍目标检测: grounding dino目标分割:Segment Anything Model (SAM)整体思路模型结构:数据引擎 图片绘制 集成样例 其他问题附录 总体介绍 总体流程 本方案用到了三个步骤,按顺序依次为&#xff1a…

前端处理后端返回的数据中有\n\n字样的换行符标识

后端返回的数据: 上面圈着的部分就是\n,前端需要将数据进行换行,对于这类型的数据,在前端页面是需要进行稍微处理才能正常显示。如果没有经过处理,那么内容是不会在有换行符的位置进行换行显示的 解决办法1&#xff1…

微服务07-分布式缓存

前提: 单机的Redis存在四大问题: 解决办法:基于Redis集群解决单机Redis存在的问题 1、Redis持久化 Redis 具有持久化功能,其会按照设置以 快照 或 操作日志 的形式将数据持久化到磁盘。 Redis有两种持久化方案: RDB持久化AOF持久化注意: RDB 是默认持久化方式,但 Red…

【MySQL】并发执行事务可能存在的问题, 事务的四种隔离级别

文章目录 前言一、并发执行事务可能存在的问题1, 脏读问题2, 不可重复读3, 幻读 二、MySQL 的四种隔离级别1, READ UNCOMMITTED 读未提交2, READ COMMITTED 读已提交3, REPEATABLE READ 可重复读 (MySQL 的默认事务隔离级别)4, SERIALIZABLE 串行化 总结 前言 各位读者好, 我是…

Easy Rules规则引擎(1-基础篇)

目录 一、序言二、Easy Rules介绍三、定义规则(Rules)1、规则介绍2、编程式规则定义3、声明式规则定义 四、定义事实(Facts)五、定义规则引擎(Rules Engine)1、规则引擎介绍2、InferenceRulesEngine规则引擎示例(1) 定义触发条件(2) 定义规则触发后的执行行为(3) 测试用例 一、…

【密码学】密码棒密码

密码棒密码 大约在公元前700年,古希腊军队使用一种叫做scytale的圆木棍来进行保密通信。其使用方法是这样的:把长带子状羊皮纸缠绕在圆木棍上,然后在上面写字;解下羊皮纸后,上面只有杂乱无章的字符,只有再次以同样的方式缠绕到同样粗细的棍子上,才能看出所写的内容。快速且不容…

安卓源码分析(10)Lifecycle实现组件生命周期管理

参考: https://developer.android.google.cn/topic/libraries/architecture/lifecycle?hlzh-cn#java https://developer.android.google.cn/reference/androidx/lifecycle/Lifecycle 文章目录 1、概述2、LifeCycle类3、LifecycleOwner类4、LifecycleObserver类 1、…

聊聊51单片机

目录 1.介绍 2.发展 3.应用领域 4.发展前景 1.介绍 51单片机(AT89C51)是一种常见的8位微控制器,属于Intel MCS-51系列。它是一种低功耗、高性能的单片机,广泛应用于嵌入式系统中。 51单片机具有很多特点和功能,例如…

智慧城市美术效果Unity实现笔记流程

智慧城市美术效果Unity实现笔记流程: 参考 对标 效果图: 参考资料: 方案一: fBlender GIS 获取城市 房屋道路等数据 安装BlenderGIS插件 落叶大师智慧城市效果解析 方案二: CityEngine2022地块生成 写实类-参考图&…

棒球在国际上的流行·棒球1号位

棒球在国际上的流行 1. 棒球的起源与历史 棒球的起源源于美国。19世纪中叶,由于美国领土的扩张,当时的美国殖民地的印第安人将棒球类游戏,带到了当时的弗吉尼亚州的奥克兰。后来,棒球运动流传到了加利福尼亚州的圣迭戈。早期的棒…