软件测试学习笔记丨Pytest 学习指南

news2024/12/25 14:18:10

本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/32336

基本介绍

pytest框架是一个成熟,全面的测试框架,具有非常丰富的第三方插件,并且可以自定义扩展

比如:pytest-selenium , pytest-html , pytest-rerunfailures(失败case重复执行)pytest-xdist(多cpu分发)

pytest还以其简单灵活,上手简单著称,能够支持简单的单元测试和复杂的功能测试,支持参数化操作。

安装指南

pip install pytest

验证安装:

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

文件基本命名格式

默认满足以下条件:

测试文件满足:test_xxx.pyxxx_test.py格式,即以test_为前缀或_test为后缀

测试类满足:以Test开头,且不能含有init方法(定义class时,要以T开头,不然pytest框架不会识别该类,自然就不会进入该类内部进行搜索)

因为测试类里进行前后置操作不能通过init等魔法函数,而是通过特定的函数setup_classteardown_class前面半段指定了是前置操作还是后置操作,后半段则是指定了该操作的重复级别:

class:类重复级别:该类中只执行一次

method:测试方法重复级别:该类中每个测试用例(方法)执行一次

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

模板

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

pytest命令行执行

指定文件:
pytest ./xxx.py
指定方法
pytest ./xxx.py::类名::方法名
pytest ./xxx.py::TestData::test_demo1

### 常用命令参数
-v 输出用例更加详细的执行信息,比如用例所在文件和用例名称
-k 执行用例中包含'关键字'的用例
-s 输出用例中的调试信息,比如print打印消息,不加参数则不输出待执行的用例
-m 执行标记的内容,执行特定的测试用例,执行有相同标记的测试用例
-x 执行失败则停止执行,后面的用例不会被执行
--maxfail=n 执行失败n次后停止执行,n为最大程度接收失败的次数
--count=n 执行用例n次,n=2则执行两次
--lf (last failed) 重新执行上传失败的用例,若没有失败,则会全部跑
--ff (failed first) 重新运行所有用例,但是首先运行上传失败的用例

### 测试结果的标志
. 代表一个测试用例通过,..代表两个测试用例通过
s 代表skip,即用例跳过执行
F 即failure一般是断言发生错误
E error,一般是用例执行过程中报错

pytest 标记测试用例以及测试用例的指向执行

pytest的标记机制与用例执行的方法

pytest标记是需要通过pytest.mark来标记使用的,pytest为了应对各种测试场景也内置了许多标记。

1、参数化标记:pytest.mark.parametrize通过parametrize可以将用例数据和用例执行的逻辑代码分离,并实现根据用例,自动生成测试用例

2、

@pytest.mark.parametrize('item',[11,22,33,44,55,66])
def test_demo(item)
    assert item >50
用法:
格式:pytest.mark.parametrize('每个用例包含的变量列表,以引号括住,变量间以,号隔开',实参列表,当每组变量数量只有一个时,使用一维数组即可,无特殊包裹要求,以逗号隔开,若存在多个变量则输入二维数组即可。)

3、跳过用例执行:pytest.mark.skip通过skip装饰的用例,在执行时会无条件跳过。可选参数reason:跳过测试函数的原因

4、

@pytest.mark.skip
def test_demo():
    assert item>50
@pytest.mark.skip(reason='不需要执行')
def test_demo1():
    assert item>50

5、根据条件跳过用例:pytest.mark.skipifskipif可以根据条件来决定是否跳过用例的执行,如果条件为True则跳过测试函数执行。 参数:condition:跳过条件,reason:跳过的原因

6、

a =10
@pytest.mark.skipif(a>20,reason='条件不成立,不执行')
def test_demo():
    assert item >50

7、标记预期失败的用例:pytest.mark.xfailxfail可以将测试用例标记为预期执行失败的用例.

  • 参数
    • condition:将测试函数标记为xfail的条件(True/False)
    • reason:测试函数被标记为xfail的原因
    • raises:预期失败的异常类型
    • run:是否应该实际执行函数,如果False,该函数将始终xfail并且不会被执行
    • strict:严格模式(True或False)

8、

a=10
@pytest.mark.xfail(a>20,reason='条件不成立,不执行',raises = AssertionError)
def test_demo():
    assert item>50

在这里插入图片描述

推荐学习

【霍格沃兹测试开发】7天软件测试快速入门带你从零基础/转行/小白/就业/测试用例设计实战

【霍格沃兹测试开发】最新版!Web 自动化测试从入门到精通/ 电子商务产品实战/Selenium (上集)

【霍格沃兹测试开发】最新版!Web 自动化测试从入门到精通/ 电子商务产品实战/Selenium (下集)

【霍格沃兹测试开发】明星讲师精心打造最新Python 教程软件测试开发从业者必学(上集)

【霍格沃兹测试开发】明星讲师精心打造最新Python 教程软件测试开发从业者必学(下集)

【霍格沃兹测试开发】精品课合集/ 自动化测试/ 性能测试/ 精准测试/ 测试左移/ 测试右移/ 人工智能测试

【霍格沃兹测试开发】腾讯/ 百度/ 阿里/ 字节测试专家技术沙龙分享合集/ 精准化测试/ 流量回放/Diff

【霍格沃兹测试开发】Pytest 用例结构/ 编写规范 / 免费分享

【霍格沃兹测试开发】JMeter 实时性能监控平台/ 数据分析展示系统Grafana/Docker 安装

【霍格沃兹测试开发】接口自动化测试的场景有哪些?为什么要做接口自动化测试?如何一键生成测试报告?

【霍格沃兹测试开发】面试技巧指导/ 测试开发能力评级/1V1 模拟面试实战/ 冲刺年薪百万!

【霍格沃兹测试开发】腾讯软件测试能力评级标准/ 要评级表格的联系我

【霍格沃兹测试开发】Pytest 与Allure2 一键生成测试报告/ 测试用例断言/ 数据驱动/ 参数化

【霍格沃兹测试开发】App 功能测试实战快速入门/adb 常用命令/adb 压力测试

【霍格沃兹测试开发】阿里/ 百度/ 腾讯/ 滴滴/ 字节/ 一线大厂面试真题讲解,卷完拿高薪Offer !

【霍格沃兹测试开发】App自动化测试零基础快速入门/Appium/自动化用例录制/参数配置

【霍格沃兹测试开发】如何用Postman 做接口测试,从入门到实战/ 接口抓包(最新最全教程)

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

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

相关文章

Git常用方法——详解

一、下载安装git git官网: Git - Downloads (git-scm.com) 下载安装Git(超详细超简单)_git下载-CSDN博客 二、克隆下载至本地 1、复制HTTPS链接 在gitee或者gitLab或者gitHub上复制HTTPS链接 2、打开Open Git Bash here 在本地想要新建文…

小程序原生-列表渲染

1. 列表渲染的基础用法 <!--渲染数组列表--> <view wx:for"{{numList}}" wx:key"*this" > 序号&#xff1a;{{index}} - 元素&#xff1a;{{item}}</view> <!--渲染对象属性--> <view wx:for"{{userInfo}}" wx:key&q…

怎么给视频加片头片尾和字幕

在这个视觉内容爆炸的时代&#xff0c;一段精心制作的视频不仅能吸引眼球&#xff0c;更能传达深刻的情感与信息。而一个引人入胜的片头、一个温馨感人的片尾&#xff0c;以及恰到好处的字幕&#xff0c;无疑是提升视频质感的关键。那么新人要怎么给视频加片头片尾和字幕效果呢…

2024年9月收评

金1是从2005年12月开始&#xff0c;到现在2024年5月&#xff0c;还差7个月整整20年。一共11轮。 这20年里&#xff0c;真正形成单边趋势&#xff0c;能较好获利或者说至少不亏损的一共有以下几次&#xff0c; 第1轮&#xff0c;第2轮&#xff0c;第7轮&#xff0c;第8轮&…

《程序猿之Redis缓存实战 · 集合类型》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…

基于微信小程序的商品展示+ssm论文ppt源码调试讲解

2 系统开发环境 2.1微信开发者工具 微信开发者工具现在已经被小程序开发团队开发运行&#xff0c;目前微信开发者工具任然在不断的完善中&#xff0c;在开发小程序时经常要不断的更新。可以使用微信扫码登陆开发者工具&#xff0c;开发者工具将使用这个微信帐号的信息进行小程…

为VRoidStudio制作的vrm格式模型制作blendshape

零、效果展示 bs视频演示 一、准备相关插件 1、VRoidStudio&#xff08;免费&#xff09; 下载网址&#xff1a;https://vroid.com/en/studio 2、UniVRM&#xff08;免费&#xff09; 下载网址&#xff1a;https://github.com/vrm-c/UniVRM/releases 注意&#xff1a;unity…

Qt --- 常用控件的介绍---Widget属性介绍

一、控件概述 编程&#xff0c;讲究的是站在巨人的肩膀上&#xff0c;而不是从头发明轮子。一个图形化界面上的内容&#xff0c;不需要咱们全都从零区实现&#xff0c;Qt中已经提供了很多内置的控件了&#xff08;按钮&#xff0c;文本框&#xff0c;单选按钮&#xff0c;复选…

yolov8实例分割重要图片

训练分割要准备好数据集和分割预训练权重文件 下面这张图是数据集的格式 下面这张图配置数据集&#xff0c;下面names 要和labelme转txt里配置的一样 下面这张图进行训练&#xff0c;配置一些全局参数 &#xff0c;初始的yolov8s-seg.pt文件需要到github上yolov8开源项目里下 l…

linux部署redis,整合ansible和redis

准备服务器192.168.45.133&#xff0c;192.168.45.135 在135上执行命令yum install -y redis安装redis yum install -y redis 源码安装方法 wget http://download.redis.io/releases/redis-2.8.13.tar.gz tar zxf redis-2.8.13.tar.gz cd redis-2.8.13 make PREFIX/usr/loca…

Cannon-es.js之Distance Constrait模拟布料

本文目录 前言1、Particle2、前置代码准备2.1 代码2.2 效果 3、使用距离约束模拟布料3.1 代码3.2 效果 前言 在现代Web开发中&#xff0c;实现逼真的物理效果对于提升用户体验至关重要。Cannon-es.js&#xff0c;作为Cannon.js的ES6模块版本&#xff0c;凭借其轻量级、高性能和…

selenium测试框架快速搭建详解

一、介绍 Selenium目前主流的web自动化测试框架&#xff1b;支持多种编程语言Java、pythan、go、js等&#xff1b;selenium 提供一系列的api 供我们使用&#xff0c;因此在web测试时我们要点页面中的某一个按钮&#xff0c;那么我们只需要获取页面&#xff0c;然后根据id或者n…

拯救华为秘盒M310

这个盒子当年宣传得比较厉害&#xff0c; 当时确实也没有什么可选的&#xff0c;当年是高价入的,这个盒子有二切一的hdmi切换功能&#xff0c; 这点从今天来看&#xff0c; 都是一个亮点 华为秘盒M310是一款小巧但功能强大的网络机顶盒。它搭载了基于安卓系统的操作平台&#x…

序列化方式四——Hessian

介绍 Hessian是一个轻量级的、基于HTTP的RPC&#xff08;远程过程调用&#xff09;框架&#xff0c;由Resin开源提供。它使用一个简单的、基于二进制的协议来序列化对象&#xff0c;并通过HTTP进行传输。Hessian的设计目标是提供一种高效、可靠且易于使用的远程服务调用机制。…

算法分析——《二分查找》

&#x1f6e9;《二分查找》 &#x1f3a8;题目描述&#xff1a; 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums 中的 target&#xff0c;如果目标值存在返回下标&#xff0c;否则返回 -1。 示例 …

厦门大龄自闭症寄宿学校:为孩子们提供全方位关怀和教育

在自闭症儿童的教育与关怀领域&#xff0c;厦门大龄自闭症寄宿学校以其专业性和全面性&#xff0c;为众多家庭提供了宝贵的支持与帮助。而在中国南方的广州&#xff0c;也有一所同样致力于自闭症儿童全方位关怀与教育的机构——星贝育园自闭症儿童寄宿制学校。星贝育园以其独特…

为什么要自定义异常

背景 我们在阅读各类源码时&#xff0c;会注意到几乎各个功能包中&#xff0c;都包含有自定义的异常&#xff1b;那有没有想过&#xff0c;JDK的源码中&#xff0c;已经定义了各种异常体系&#xff0c;为啥后续的一些依赖Jar包中&#xff0c;还要自定义异常呢&#xff1f; 下面…

Java应用程序的服务器有哪些?

1.Tomcat、Jetty 和 JBoss 区别&#xff1f; Apache Tomcat、Jetty 和 JBoss都是用于部署Java应用程序的服务器&#xff0c;它们都支持Servlet、JSP和其他Java EE&#xff08;现在称为Jakarta EE&#xff09;技术。尽管它们有一些相似的功能&#xff0c;但它们之间还是存在一些…

二叉树相关oj题(Java)

一. 检查两颗树是否相同。OJ链接 这里我们考虑两种情况: 1.结构上 2.节点值上 当上面两种情况同时遍历时: 1.如果两颗树的节点都不为空,就判断值 2.如果两棵树种一棵树的节点为空另一棵树的节点不为空,则这两颗肯定不是相同的树 整体来看:要判断两棵树是否相同,得判断根,然后判…

SQLite数据库迁移与备份技术详解

目录 引言 SQLite数据库迁移 迁移概述 迁移步骤 1. 创建目标数据库系统 2. 导出SQLite数据库数据 3. 导入数据到目标数据库 4. 验证数据迁移 迁移注意事项 SQLite数据库定期备份 备份的重要性 备份方法 1. 使用VACUUM命令 2. 使用ATTACH DATABASE和PRAGMA语句 3.…