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

news2024/11/24 8:58:59

目录:导读

    • 前言
    • 一、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性能测试

请添加图片描述

九、总结(尾部小惊喜)

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

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

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

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

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

相关文章

js设置css变量控制页面一行展示指定个数的元素

前置知识: CSS变量之var()函数的应用——动态修改样式 & root的使用 flex相关知识 场景: 动态设置给父元素内子元素设置每行排列几个 通过 document.body.style.setProperty(--itemNum, 5)设置样式变量,然后通过给父元素设置display: f…

此芯科技加入 openKylin 开源社区

导读近日消息,据此芯科技官方公众号表示,此芯科技目前已经签署 openKylin 社区 CLA(Contributor License Agreement 贡献者许可协议),正式加入 openKylin 开源社区。 此芯科技成立于 2021 年,是一家专注于设…

EDUSRC之一次奇葩的文件上传

当时误打误撞发现的,觉得挺奇葩的,记录下 一个正常的图片上传的点,文件类型白名单 但是比较巧的是当时刚对上面的id进行过注入测试,有一些遗留的测试 payload 没删,然后在测试上传的时候就发现.php的后缀可以上传了&a…

Https、CA证书、数字签名

Https Http协议 Http协议是目前应用比较多应用层协议,浏览器对于Http协议已经实现。Http协议基本的构成部分有 请求行 : 请求报文的第一行请求头 : 从第二行开始为请求头内容的开始部分。每一个请求头都是由K-V键值对组成。请求体&#xf…

Remote Sensing,2023 | 基于SBL的分布式毫米波相干雷达成像的高效实现

Remote Sensing,2023 | 基于SBL的分布式毫米波相干雷达成像的高效实现 注1:本文系“无线感知论文速递”系列之一,致力于简洁清晰完整地介绍、解读无线感知领域最新的顶会/顶刊论文(包括但不限于 Nature/Science及其子刊; MobiCom, Sigcom, MobiSys, NSDI…

Kubeadm安装K8s集群

一、硬件环境 准备3台Linux服务器&#xff0c;此处用Vmware虚拟机。 主机名CPU内存k8smaster2核4Gk8snode12核4Gk8snode22核4G 二、系统前置准备 配置三台主机的hosts文件 cat << EOF > /etc/hosts 192.168.240.130 k8smaster 192.168.240.132 k8snode1 192.168.…

小白必看:测试人有必要参考的软件测试工作规范

为了规范测试工作、减少开发与测试之前的沟通成本、保证项目进度、提高软件质量&#xff0c;测试人员有必要参考这份软件测试工作规范。 1.1. 编码规范 软件程序开发需要遵守编码规范&#xff0c;一是可以减少代码的维护成本&#xff0c;提高开发工作效率&#xff1b;二是有…

2023国赛数学建模思路 - 复盘:人力资源安排的最优化模型

文章目录 0 赛题思路1 描述2 问题概括3 建模过程3.1 边界说明3.2 符号约定3.3 分析3.4 模型建立3.5 模型求解 4 模型评价与推广5 实现代码 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 描述 …

AOPSpringAOP两种动态代理

1、什么是AOP 切面编程&#xff08;Aspect-Oriented Programming&#xff0c;AOP&#xff09;是一种软件开发方法&#xff0c;旨在通过分离关注点&#xff08;Concerns&#xff09;来增强代码的模块性、可维护性和可重用性。 AOP 是 OOP 的延续&#xff0c;是软件开发中的一个…

【Qt高阶】老Qt都不一定清楚的“QObject线程亲和性”【2023.08.13】

老Qt都不一定清楚的“线程亲和性” 与题目无关 感觉自己还挺2&#xff0c;有粉丝点了那个契约者会给up发个鼓励的话&#xff0c;我还以为是人私信发的&#xff0c;都挨个感谢了&#xff0c;后来才意识到是系统自动发的&#x1f623;&#x1f623;&#x1f623;。 自上上期视频对…

⛳ Java集合框架

目录 ⛳ Java集合框架&#x1f3a8; 一、概述&#x1f3ed; 二、Iterator接口&#x1f4ad; 2.1、基础用法&#x1f69c; 2.2、原理&#x1f43e; 2.3、为什么需要iterator接口☁ 2.4、ListIterator接口&#x1f4e2; 2.5、iterator在集合中的实现例子2.5.1、Iterator在ArrayLi…

潜水减压多普勒超声气泡信号识别方法

用三参量模糊分析法识别潜水减压气泡信号的研究 摘要 三参量模糊分析法。建立了 f-p-Δp( 频率、谱峰、峰差) 三参量模糊分析法&#xff0c;综合气泡原本特征以及背景噪声计算评分以识别气泡&#xff0c;最后给予 SPENCERⅠ &#xff5e; Ⅲ分级原理和方法 减压气泡信号的能量…

分布式 - 消息队列Kafka:Kafka生产者发送消息的方式

文章目录 1. Kafka 生产者2. kafaka 命令行操作3. kafka 生产者发送消息流程4. Kafka 生产者的创建5. Kafka 生产者发送消息1. 发送即忘记2. 同步发送3. 异步发送 6. Kafka 消息对象 ProducerRecord 1. Kafka 生产者 不管是把Kafka作为消息队列、消息总线还是数据存储平台&…

Vue3组件库

Vue3组件库 ViteVue3TypescriptTSX 1、项目搭建 1.1、创建项目&#xff08;yarn&#xff09; D:\WebstromProject>yarn create vite yarn create v1.22.19 [1/4] Resolving packages... [2/4] Fetching packages... [3/4] Linking dependencies... [4/4] Building fresh p…

asyncio是什么?

如果把进程比作从A处到B处去这件事&#xff0c;那么线程就是可供选择的多条道路&#xff0c;协程就是道路上特殊路段&#xff08;类似限速&#xff0c;一整条道路都是特殊路段的话&#xff0c;就是全部由协程实现&#xff09; 例图如下&#xff1a; 1. 什么是协程&#xff08…

FPGA应用学习笔记----CORDIC 算法和小结

加减移位操作来运算三角函数&#xff0c;开根号&#xff0c;求对数 圆周旋转模式

沁恒ch32V208处理器开发(四)串口通信

目录 串口资源资源配置同步模式单线半双工模式中断DMA 串口的初始化串口通信的实现 串口资源 资源配置 CH32V208 系列&#xff0c;是基于 RISC-V 指令架构设计的 32 位 RISC 内核 MCU&#xff0c;根据封装的不同&#xff0c;可用的USART串口资源如下表所示&#xff1a; 且US…

完美解决Github提交PR后报错:File is not gofumpt-ed (gofumpt)

问题阐述 最近在Github上提交PR后&#xff0c;遇到了这么一个问题&#xff1a;golangci-lint运行失败&#xff0c;具体原因是File is not gofumpt-ed (gofumpt)。 名词解释 golangci-lint&#xff1a; golangci-lint 是Go语言社区中常用的代码质量检查工具&#xff0c;它可以…

阿里云弹性裸金属服务器详细介绍(原神龙)

阿里云弹性裸金属服务器&#xff08;ECS Bare Metal Server&#xff09;是一种可弹性伸缩的高性能计算服务&#xff0c;原神龙服务器&#xff0c;计算性能与传统物理机无差别&#xff0c;具有安全物理隔离的特点&#xff0c;裸金属服务器分钟级的交付周期。阿里云服务器网分享阿…