自动化测试 —— Pytest测试框架

01 | 简介
Pytest是一个非常成熟的全功能的Python测试框架,主要有以下特点:

简单灵活,容易上手,文档丰富

支持参数化,可以细粒度地控制测试用例

支持简单的单元测试与复杂的功能测试,还可以用来做Selenium、Appium、Requests等UI、接口自动化测试

支持很多第三方插件,并且可以自定义扩展(Pytest插件下载地址)

支持测试用例的跳过与失败重试

可以很好的与CI工具结合,比如Jenkins

02 安装

pip install pytest

03 | 简单使用

import pytestdef test01():print('第一条用例')assert True
def test02():print("第二条用例")assert Falseif __name__=="__main__":# -s:显示用例中的输出# -v:输出更详细的用例执行信息# __file__:本文件pytest.main(["-s", "-v", __file__])

运行结果如下图:

04 | 初始化&结束

4.1 函数级别

每执行一个测试用例就执行一次初始化&结束方法

import pytest
class Test:def setup(self):print("初始化")def teardown(self):print("结束")def test01(self):print('第一条用例')assert Truedef test02(self):print("第二条用例")assert False
if __name__=="__main__":pytest.main(["-s",__file__])

 执行结果图:

4.2 类级别

不管类中有多少条用例需要执行,仅仅只执行一次初始化&结束方法

import pytest
class Test:def setup_class(self):print("初始化")def teardown_class(self):print("结束")def test01(self):print('第一条用例')assert Truedef test02(self):print("第二条用例")assert False
if __name__=="__main__":pytest.main(["-s",__file__])

 执行结果图:

05 | 常用插件

5.1 测试报告

安装测试报告插件

pip install pytest-html

 在项目目录下创建 pytest.ini 配置文件,配置文件中新增测试报告存储路径。

[pytest]
# 在当前目录下创建report目录存放测试报告
addopts = --html=./report/report.html    

执行测试,生成的测试报告如下图: 

5.2 失败重试

安装插件

pip install pytest-rerunfailures

 全局重试:在配置文件中增加重试参数,控制所有用例失败后的重试及重试等待时间

[pytest]
addopts = --html=./report/report.html --reruns 3 --reruns-delay 2
# --reruns n,n是一个整数,表示重试次数
# --reruns-delay n,n是一个整数,表示重试等待时间,单位是s

测试报告中可以看出失败用例的重试情况

单个重试:在某个用例函数中增加装饰器,注意需要将 全局重试 的配置注释掉

# reruns指定重试次数,reruns_delay指定重试间隔
@pytest.mark.flaky(reruns=2, reruns_delay=1)  def test02(self):print("第二条用例")assert False

测试报告中看重试情况:

5.3 多进程并发执行

pytest-xdist的出现就是为了让自动化测试用例可以分布式执行,从而节省自动化测试时间

安装插件

pip install pytest-xdist

 多CPU并行执行

pytest -n 并行测试数量

5.4 多重断言
使用pytest进行断言判断的时候,为了用例的精准性,经常会多个方面进行断言,比如:

断言1:断言响应的http的状态

断言2:断言响应返回的code值

断言3:断言响应返回的json中的data字段是否符合预期。

如果使用原生python的assert,就会遇到一个断言失败则全部失败的情况。比如说,断言1结果为Failed,那么断言2和断言3都不会被执行。我们希望断言2和断言3继续执行,这样我们能获取更多的断言结果来判断出接口哪里出了问题,能够更好地进行问题定位,这时候就可以使用pytest-assume插件来实现。

安装插件

pip install pytest-assume

使用案例

import pytestdef test_add2():pytest.assume(1 + 4 == 5)pytest.assume(1 + 3 == 3)pytest.assume(2 + 5 == 7)pytest.assume(2 + 5 == 9)print("测试完成")if __name__=="__main__":pytest.main(["-s", "-v", __file__])

执行结果如下图,可以看出总共执行了四个断言,其中失败的断言有2个

5.5 美化执行结果

在我们进行自动化测试的时候,用例往往是成百上千,执行的时间是几十分钟或者是小时级别。有时,我们在调试那么多用例的时候,不知道执行到什么程度了,而pytest-sugar插件能很好解决我们的痛点。

安装pytest-sugar插件

pip install pytest-sugar

 在命令行中执行用例文件,执行结果如下图,用例执行时会有进度条展示:

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

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

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

 资料获取方式 :

 

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

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

相关文章

C/C++ 个人笔记

仅供个人复习, C语言IO占位符表 %d十进制整数(int)%ldlong%lldlong long%uunsigned int%o八进制整型%x十六进制整数/字符串地址%c单个字符%s字符串%ffloat,默认保留6位%lfdouble%e科学计数法%g根据大小自动选取f或e格式,去掉无效0 转义符表…

从零开发HarmonyOS(鸿蒙)手机小游戏——数字华容道

HarmonyOS(鸿蒙)手机第一个小游戏app——数字华容道 前言概述正文创建项目实现初始界面布局实现数字的随机打乱实现滑动或点击调换数字实现游戏成功界面 源代码结语 前言 2月16号HarmonyOS2.0手机开发者Beta版已经发布了,作为“18N”战略的重…

【180929】败走华容道游戏源码

这是一款基于WPF非常经典的华容道游戏源码。 古老的中国游戏,以其变化多端、百玩不厌的特点与魔方、独立钻石棋一起被国外智力专家并称 为“智力游戏界的三个不可思议”。它与七巧板、九连环等中国传统益智玩具还有个代名词叫作“中国的难题”。 游戏玩法&#xff1…

华容道小游戏

华容道代码: package ytu.jsj.com.cn; import java.awt.*; import java.awt.event.*; import javax.swing.*;public class Hua_Rong_Road extends JFrame implements MouseListener,KeyListener,ActionListener{Person person[]new Person[10];JButton left,right,a…

【180927】华容道游戏源码

本源码是一个采用winform进行开发的华容道游戏源码,华容道游戏作为一个经典游戏,各部分设计都恰到好处,非常巧妙,因此成为世界游戏界的三大不可思议。华容道游戏源于三国时期著名的历史故事。东汉末年,曹操、孙权以及刘…

28连局华容道游戏

华容道游戏取材于三国时期,关羽在华容道放走曹操的故事。这个游戏一共28局,是根据一款手机游戏编写的,希望大家能够喜欢。一个益智类的小游戏,大家可以在工作之余作为消遣之乐。 玩不过去没有关系,我们可以把游戏进度存储起来,下次玩的时候读取进度文件就可以了,我们可以…

华容道游戏VB.NET 2010 版28连局

这一版的华容道游戏,有玩法演示,局数、步数、时间提示完善。新增加了关数名字。 托动处理的更加完美,当鼠标手动图片后图片消失,鼠标变成你托动的图片,产生一种立体的感觉。 请大家查看新版的华容道游戏VB.NET 2010 版28连局。 下载地址:http://blog.sina.com.cn/…

经典华容道游戏(含bfs求解)

前言 这是数据结构的课设作业,也是我第一次写的千行代码小游戏。 学习EasyX图形库写完程序一共用了三天时间,可以说是相当熬人了。 当然,第一次写,难免不怎么好,比如无动画、无音乐、丑得不行的ui等等,体…

206. 反转链表 (简单系列)

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入:head [1,2] 输出:[2,1] 示例 3: 输…

DebugInfo 模块功能系统介绍 文本上色 文本与表格对齐 分隔线 秒表计算器 语义日期

背景 今天系统性的为大家介绍一下 DebugInfo 模块。这个模块提供了一些丰富的基本功能的封装,希望能给有需要的人带来些许帮助。 文本上色 DebugInfo 模块引入了 colorama提供文本颜色支持。 # -*- coding:UTF-8 -*-# region 引入必要依赖 from DebugInfo.DebugI…

数字时钟器

数字时钟器 一、实现功能: 实现基本的时钟样式实现时间日期的文本显示实现仿真秒针走动时候的音效支持设置时间,点击时钟中间设置时间,点击边缘恢复系统时间。 二、效果截屏: 三、github源码地址 GitHub - LxNoMi/DigitalClock…

FPGA数字时钟

FPGA数字时钟1 本代码借鉴了一些,网上资源。 1.设计目的 (1)掌握数字电子钟的设计方法; (2)掌握常用数字集成电路的功能和使用; (3)巩固数字电路理论知识,掌握…

HSP高度敏感的人应该了解的内容(附图书资源)

推荐图书:《高敏感是种天赋》 在爆炸的信息海中希望你慢慢看,细细品~ 什么是高敏感人群? (Highly Sensitive Person,简称HSP)是指那些对外界刺激和情绪变化非常敏感,容易受到情绪的影响,并且需…

基于Arduino的多功能数字时钟

实现功能: 显示时间、日期和星期断电保存时间通过按钮设置时间、日期整点响铃自定义闹钟显示温度自定义报警温度按键功能:按选择键进入设置时间功能;同时按 - 键进入闹钟和报警温度设置功能;再按选择键光标跳动,光标…

【Proteus】多功能数字时钟设计

ZQQQ 2021.12.27 课设一:各芯片引脚介绍:1:数码管:[^1]2:CD4511(译码显示):[^2]3:CD4518(计数器)[^3]3:555定时器4:CD4011和CD4012 二:各部分电路图搭建1:校正时间电路2:整点报时电路3:分频电路4:进制电路 课设 我们将该电路分为几个部分: 1:显示电路(用6个共阴数码管来显示) 2…

单片机:数字式时钟—日历

单片机:数字式时钟—日历 功能要求: (1)显示时分秒,年月日 (2)具有:启动(按下此键后单片机才开始工作)、暂停、继续、清零、设置时间/年月日/闹钟的功能 &am…

Quartus ii 13.1 数字时钟

内容摘要: 使用计数器和数据选择器等器件实现数字时钟电路。电路最终在开发板上显示的是时钟的秒和分(开发板所限,当然如果开发板支持8位显示的话也可以自己加到小时位的显示)。电路包四个部分:时钟信号分频电路&#…

FPGA-Verilog多功能数字时钟

一.数字时钟设计 1.硬件资源:共阴极数码管一块,FPGA开发板一块(EP4CE40F23C8); 2. 开发板资源:3颗独立按键,数码管接口; 3. 功能设计:三种功能&#xff1a…

【Java】Java数字时钟

应用名称:Java数字时钟 用到的知识:Java GUI编程,线程 开发环境:win8eclipsejdk1.8 功能说明:可以显示当前系统的年月日、星期以及准确时间,并实时更新显示。 效果图: 源代码: i…

51单片机入门——(新)简易数字时钟

文章目录 设计要求原理图按键部分介绍 代码解析 设计要求 实现正确稳定地显示小时(两位数)、分钟(两位数)、秒钟(两位数),同时数码管应无闪烁问题。通过按键分别实现时、分信息的调整,方便用户对时间的校准。加入闹铃功能在(本设计中用LED代…