吐血整理,最全Pytest自动化测试框架快速上手(超详细)

news2024/11/19 8:24:03

目录:导读

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


前言

pytest框架

pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点:

简单灵活,容易上手;
支持参数化;
能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests);

pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行)、pytest-xdist(多CPU分发)等

测试用例的skip和xfail处理;
可以很好的和jenkins集成;
report框架----allure 也支持了pytest;

1、安装

pip install pytest

2、验证安装

pytest --version # 会展示当前已安装版本

3、pytest文档

官方文档:https://docs.pytest.org/en/latest/contents.html

在pytest框架中,有如下约束:

所有的单测文件名都需要满足test_.py格式或_test.py格式。

在单测文件中,测试类以Test开头,并且不能带有 init 方法(注意:定义class时,需要以T开头,不然pytest是不会去运行该class的)

在单测类中,可以包含一个或多个test_开头的函数。

此时,在执行pytest命令时,会自动从当前目录及子目录中寻找符合上述约束的测试函数来执行。

4、创建测试用例

创建test_开头的文件,测试文件以 test_xx.py 命名需要以 test_开头(或_test 结尾)

若是新建类,测试类需要以 Test_开头,并且不能带有 init 方法(Test开头的类,这个类也叫做测试套件,类下面的是函数才是测试用例)

测试用例(方法)需要以 test_开头

import pytest  #导入pytest模块


def test_beifan():  #测试用例
    pass
    
class TestBaili:  #测试套件
    def test_a(self): #测试用例,第一个测试方法
        pass
        
    def test_b(self):  #测试用例,第二个测试方法
        pass

在用例中使用断言

Pytest 最常用的断言一般有以下五种:

assert xx:判断 xx 为真
assert not xx:判断 xx 不为真
assert a in b:判断 b 包含 a
assert a == b:判断 a 等于 b
assert a !=b:判断 a 不等于 b

添加断言在对应的方法里面,做判断测试用例结果是否满足预期,示例如下:

在这里插入图片描述

优化断言

如果想要在失败的时候看到更详细的信息,可以在断言上添加说明,示例如下:
执行结果如下图,可以看到失败时断言的说明信息:

在这里插入图片描述

5、执行测试用例

使用命令行执行
cmd 窗口,然后执行 pytest 文件路径/测试文件名例如 pytest ./test_tt.py

如果当前路径已经是放测试用例文件的文件夹下,想要测试文件,则直接可以输入pytest 测试文件名 即可:

在这里插入图片描述

如果只输入 pytest,则会默认执行当前文件夹下所有以 test_开头(或_test 结尾)的文件。

执行指定文件指定方法

命令行编写方式
pytest路径/文件名::类名::方法名例如

在这里插入图片描述

带参数执行
常用的 pytest 带参数执行:列举几种,其余扩展可以自行百度

Pytest -v 输出用例更加详细的执行信息,比如用例所在文件和用例名称

pytest -k 执行用例中包含‘关键字’的用例

pytest -s 输出用例中的调试信息,比如 print 打印信息,如果不加参数则不输出待执行的用例

pytest -m执行‘标记’的内容,执行特定的测试用例,执行有相同标记的测试用例,添加标记的方法如下

pytest -x执行失败则停止执行,后面的用例不会被执行

pytest --maxfail=n执行失败 n 次之后停止执行,n 是执行失败的次数

pytest --count=n 执行用例 n 次,n=2 就是执行两次

pytest --lf (last failed)重新运行上次失败的用例,若没有失败的会全部跑

pytest --ff (failed first)重新运行所有用例,但首先运行上次失败的用例

6、读懂测试结果

.代表一个测试用例通过,…代表两个测试用例通过,以此类推;
s,即Skip,代表用例跳过执行;
F,即Failure,一般是断言发生错误;
E,即Error,一般是用例执行过程中报错。

7、pytest的fixures

fixtures(夹具)可以在测试用例执行之前,执行之后,自动执行一些代码

在不同用例中,相同的代码进行复用

在不同用例中,实现依赖管理

1)创建fixtures
pytest的夹具,本质是“函数”,加上fixtures装饰器。

夹具=函数+fixtures装饰器
创建一个conftest.py文件

import pytest  #导入pytest模块


def test_beifan():  #测试用例
    pass
    
class TestBaili:  #测试套件
    def test_a(self,driver): #测试用例,第一个测试方法
        pass
        
    def test_b(self,driver):  #测试用例,第二个测试方法
        pass

这样就会打开自动两次浏览器了。

有个要求:两个测试用例,只启动一次浏览器

100个测试用例,但是只启动1次浏览器

2)fixture的范围
创建夹具,可以指定夹具的共享范围,在共享范围内的用例,会共享同一个夹具。

pytest的夹具共享范围有5个:

function(默认,最小,自己和自己共享,不和其他用例共享)
class(同一个类中)
module(文件)
package(文件夹)
session(会话,最大,全局)

@pytest.fixture(scope='function')
def driver():
    d = webdriver.Chrome()
    d.get("http://101.34.221.219:8010/")  # 控制浏览器,访问百度
    d.quit()
    return d

在fixture这个装饰器中传递一个范围参数,用来说明用例在什么范围中是相互共享的。

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

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

拥抱每一个挑战,超越自我,勇敢向前。不要畏惧失败,它是成功的跳板;不要停歇奋斗,只有坚持才能收获辉煌。相信自己,你就是改变世界的力量。

生活的旅途永远不会一帆风顺,但只要你充满信心、坚持努力,就一定能够越过重重难关,最终携手迎接胜利的曙光。相信自己,你的努力没有白费,未来的道路由你开创。

只有在面对困难和挑战的时候,才能真正展现出你内在的潜力和实力。坚持不懈,百折不挠,你一定能够最终实现自己的梦想。相信自己,永不放弃。

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

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

相关文章

前端【响应式图片处理】之 【picture标签】

目录 &#x1f31f;前言&#x1f31f;目前最常见的解决方案&#x1f31f;新的解决方案<picture>&#x1f31f;<picture>的工作原理&#x1f31f;<picture> 兼容性解决方案&#x1f31f;写在最后 &#x1f31f;前言 哈喽小伙伴们&#xff0c;前端开发过程中经…

<el-input> textarea文本域显示滚动条(超过高度就自动显示)

需求&#xff1a;首先是给定高度&#xff0c;输入文本框要自适应这个高度。文本超出高度就会显示滚动条否则不显示。 <el-row class"textarea-row"><el-col :span"3" class"first-row-title">天气</el-col><el-col :span&…

多目标优化两种算法:加权、智能优化算法

传统数学优化算法&#xff08;加权&#xff09; 使用数学优化算法解决多目标优化问题通常是将各个子目标聚合成一个带权重的单目标函数&#xff0c;系数由决策者决定&#xff0c;或者由优化方法自适应调整。即通过加权等方式将多目标问题转化为单目标问题进行求解。 这样每次只…

编程每日一练(多语言实现)基础篇:控制台打印九九乘法口诀表

文章目录 一、实例描述二、技术要点三、代码实现3.1 C 语言实现3.2 Python 语言实现3.3 Java 语言实现3.4 JavaScript 语言实现3.5 Go 语言实现 一、实例描述 本实例要求打印出乘法口诀表&#xff0c;在乘法口诀有行和列项的相乘得出的乘法结果。根据这个特点&#xff0c;使用…

Configuration of phpstudy and sqli-labs

Go download the app&#xff1a; 小皮面板(phpstudy) - 让天下没有难配的服务器环境&#xff01; (xp.cn) Have done. Then enter the program. Enable both functions&#xff1a; Apache and MySQL. Open the website&#xff1a; Next, Lets make the sqli-liab. GitHub…

Web server failed to start. Port 8080 was already in use

一、问题 package com.djc.boot;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annota…

几个G视频能压缩成几百MB吗?跟我学视频压缩

视频大小是可以压缩的&#xff0c;现在很多情况下&#xff0c;视频文件的大小都会限制我们的行动&#xff0c;例如需要将大量视频文件随身携带&#xff0c;或者在有限的网络带宽下传输视频文件。为了解决这些问题&#xff0c;下面给大家分享几个视频压缩的技巧&#xff0c;轻松…

6-8 求链表的倒数第m个元素 分数 15

ElementType Find(List L, int m) {int count 0;for (struct Node* cur L; cur ! NULL; cur cur->Next){count;}if (m > count) {return ERROR;}int n count - m 1;struct Node* cur L;while(--n)cur cur->Next;return cur->Data; }

鹿客携手小度、天翼数字生活等生态伙伴,开启全联接Opening计划

物联网、AI等新一代信息技术的飞速发展&#xff0c;各类家居家电智能水平与日俱增。作为智能家居入口级产品&#xff0c;智能门锁行业技术也在不断内卷&#xff0c;从密码解锁&#xff0c;到指纹识别、人脸识别、生物识别&#xff0c;不断升级。寻求更安全、更便捷、更智能的新…

Android之App跳转其他软件

文章目录 前言一、效果图二、实现步骤1.弹框xml(自己替换图标)2.弹框utils3.两个弹框动画4.封装方便调用5.调用6.长按事件方法7.跳转步骤8.复制utils 总结 前言 最近遇到一个需求&#xff0c;就是App内大面积需要长按复制并跳转指定App&#xff0c;没办法&#xff0c;只能埋头…

微信CRM系统:微商不可或缺的客户管理利器!

在这个竞争激烈的时代&#xff0c;微信客户已成为微商生存和发展的关键。如何更好地了解客户需求&#xff0c;提高客户满意度和忠诚度&#xff0c;已成为微商们亟待解决的问题。而解决这些问题&#xff0c;关键在于个微是否有一套完善的客户关系管理&#xff08;CRM&#xff09…

9.变换之平移

愿你出走半生,归来仍是少年 通过顶点着色器实现图形的整体平移。 1.知识点 1.1.齐次坐标 在GLSL 中Vec4进行坐标表达时&#xff0c;作为齐次坐标(x,y,z,w).当w1时&#xff0c;这个vec4可以表达一个点的三维坐标。在进行平移时&#xff0c;应保证偏移量的W为0。 1.2矢量相加运…

【Vue面试题三】、Vue中的v-show 和 v-if 怎么理解 ?

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a;v-show和v-if有什么区别…

Linux防火墙之--SNAT和DNAT

1.SNAT是什么 SNAT又称源地址转换。源地址转换是内网地址向外访问时&#xff0c;发起访问的内网ip地址转换为指定的ip地址&#xff08;可指定具体的服务以及相应的端口或端口范围&#xff09;&#xff0c;这可以使内网中使用保留ip地址的主机访问外部网络&#xff0c;即内网的多…

VR模拟鸡胚培养接种实验,打造沉浸式的学习环境

在医学教育领域&#xff0c;传统的鸡胚接种实验一直是教学的重要组成部分。然而&#xff0c;这种实验方法存在一定的局限性&#xff0c;如操作难度大、成本高、安全隐患等。为了解决这些问题&#xff0c;越来越多的教育机构开始尝试引入虚拟现实(VR)技术&#xff0c;以模拟鸡胚…

Safran与是德科技合作推出基于GNSS技术的5G LBS方案

概述 虹科Safran与是德科技&#xff08;Keysight&#xff09;联手推进基于全球导航卫星系统&#xff08;GNSS&#xff09;技术的5G定位服务&#xff08;LBS&#xff09;&#xff0c;利用虹科Safran先进的全球导航卫星系统&#xff08;GNSS&#xff09;仿真功能扩展是德科技的5G…

成为黄金代理,必须考虑到这一点

目前很多投资者都会选择黄金代理进行现货黄金投资账户的开立。一方面是市场中各种各样的现货黄金代理&#xff0c;越来越专业&#xff0c;提供的交易服务越来越好&#xff0c;另一方面是黄金代理和黄金平台进行合作&#xff0c;如果平台选得好&#xff0c;投资者在平台开户还是…

深入探究 C++ 编程中的资源泄漏问题

目录 1、GDI对象泄漏 1.1、何为GDI资源泄漏&#xff1f; 1.2、使用GDIView工具排查GDI对象泄漏 1.3、有时可能需要结合其他方法去排查 1.4、如何保证没有GDI对象泄漏&#xff1f; 2、进程句柄泄漏 2.1、何为进程句柄泄漏&#xff1f; 2.2、创建线程时的线程句柄泄漏 …

Android Studio 是如何和我们的手机共享剪贴板的

背景 近期完成了target33的项目适配升级,随着AGP和gradle的版本升级,万年老版本Android Studio(后文简称AS)也顺便升级到了最新版Android Studio Giraffe | 2022.3.1,除了新UI外,最让我好奇的是这次的Running Devices功能(官方也称为Device mirroring)可以控制真机了. 按照操…

静态住宅代理的优缺点以及使用方法

住宅代理ip分为静态住宅代理和动态住宅代理&#xff0c;住宅代理就是代理ip是真人网络中出发&#xff0c;以代理地址来对目标网站进行访问&#xff0c;具有高匿名度和安全性&#xff0c;在跨境业务中经常使用。而静态住宅代理的特征就是ip地址长时间固定不变&#xff0c;具有唯…