Python Pytest

1.Pytest用例发现规则

1.1 模块名(python文件)名必须以 test_ 开头 _test 结尾,如 test_case,case_test,下划线都不能少

1.2 模块不能放在 . 开头的隐藏目录或者叫 venv的目录下,virtual environment,叫venv1都可以,就是不能叫venv

1.3 测试类类名必须以Test开头,并且不能带有init方法

1.4 测试类中的测试方法必须以 test 开头,必须是小写,建议使用 test_。

1.5 普通函数也必须以 test 开头,建议使用 test_

1.6 除了类方法的self参数,测试用例函数不能有参数,不能有返回值(8.4新增)

1.7 必须为可调用的(函数,方法,类,对象)

2.配置Pytest框架

2.1 通过 pytest.ini 文件

2.2 添加参数

        在终端使用 pytest -h 可以查看全部参数,其中 以下划线开头的是参数、以小写字母开头的是ini配置、全是大写的是环境

3.标记mark

       作用:让用例与众不同,进而可以实现对单个用例的特殊处理

3.1 内置标记

        包括skip,skipif,xfail,parameterize,usefixtures,fixture

3.1.1 skip

        同unittest.skip,无条件跳过用例的执行

3.1.2 skipif

        条件跳过,如果满足条件就跳过

3.1.3 xfail

        意料之内的失败,相当于取反,断言是错误的才能通过.

3.1.4 parameterize

        参数化,和unittest.parameterized类似

        

3.2 用户自定义标记

        只能实现用例的筛选。使用步骤为:1.注册、2.标记、3.筛选

更正:上图makers改为markers

4.fixure

4.1 fixture基本定义语法

使用 @pytest.fixture() 定义一个夹具函数,函数中使用 yield 分隔前置操作和后置操作,一个夹具中只能有一个 yield。
使用时在把夹具函数名作为用例的参数或者使用 @pytest.usefixtures(夹具函数名) 使用夹具

4.2 fixture参数

我们看到上面的fixture函数在每次用例执行前/后都要执行,但是有些操作我们想让所有用例只执行一次,或者用例太多,不想一个一个加参数,想让夹具直接覆盖所有用例的时候,我们就需要修改创建fixture时的默认参数

4.3 fixture返回值

跟在 yield 后的表达式会作为fixture的返回值

4.3 依赖(嵌套)fixture

一个fixture可以被另一个fixture使用,只要在参数中加上另一个fixture的名字即可

4.4 fixture跨文件使用

fixture默认不能跨文件使用:

首先需要满足scope不为默认的function,其余值都可以,然后需要新建 `conftest.py`或者将模块名改为conftest.py,然后将fixture放在其中,就能实现跨文件使用fixture。

5. 插件

插件分为两类:不需要安装的内置插件和需要安装的第三方插件。

5.1 常用插件(都是python包)

5.1.1 pytest-html

        作用:生成html报告,类似于unittest中的 htmltestreport 

        使用方法(命令行参数):

或者使用配置文件

然后直接 pytest 文件名或者执行pytest.main() 都会生成测试报告。

5.1.2 pytest-xdist

        作用:分布式执行,把测试用例任务分成n个进程同时执行,在用例自身需要花费很多时间的时候推荐使用。但是并发执行存在乱序和竞争资源的问题,不能在存在依赖关系和顺序的情况中使用。

        命令:pytest -n 进程数

def test1():print('test1', )sleep(5)def test2():print('test2')sleep(5)

如果我想要执行这两个用例,在不使用 xdist的情况下至少需要10s,如果使用了xdist,那么时间会被缩短,大概是 总时间/进程数 + 进程启动调度时间,所以这里使用xdist花费时间大概为6s。

这里因为我只有两个用例但是分配了三个进程,导致有一个进程被浪费了,以此看出用例数和进程数不用一一对应,超过的进程会被浪费。

5.1.3 pytest -rerunfailures

        作用:在用例执行失败后重新执行,一般用在网络较差的情况下

        命令:--reruns 重新执行次数 --reruns-delay 秒数

5.1.4 pytest-result-log

        作用:用日志文件记录用例运行结果

        用法:配置在 ini文件中。

5.1.5 allure-pytest

        作用:生成企业级的测试报告

        命令:

此命令只能生成对应的JSON文件,并不能生成HTML文件,要想生成HTML文件需要使用:

allure generate -o report -c temps

装饰器

        作用:对用例分层次管理,类似于文件夹或者树,使用相同装饰器的用例放在同一目录下

        @allure.epic()项目      @allure.feature()模块   @allure.story()功能    @allure.title()用例

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

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

相关文章

CSRF(跨站请求伪造)详解

目录 一、📖什么是CSRF 二、🔗漏洞利用过程 三、📑漏洞的前提条件 四、🔍常见漏洞发生位置 五、✅CSRF挖掘技巧 (一) 抓正常请求包进行初步判断 (二) Referer 绕过验证测试 (三) Token 缺失与二次验证缺失识别 六、⚠️漏…

深入解析 Qwen3-Embedding 的模型融合技术:球面线性插值(Slerp)的应用

在深度学习领域,模型融合技术是一种强大的工具,用于提升模型的鲁棒性和泛化能力。通过结合多个模型的优势,可以减少单一模型的过拟合风险,并在多种任务中实现更优的性能表现。在 Qwen3-Embedding 的训练过程中,模型融合…

【在线五子棋对战】二、websocket 服务器搭建

文章目录 Ⅰ. WebSocket1、简介2、特点3、原理解析4、报文格式 Ⅱ. WebSocketpp1、认识2、常用接口3、websocketpp库搭建服务器搭建流程主体框架填充回调函数细节 4、编写 makefile 文件5、websocket客户端 Ⅰ. WebSocket 1、简介 WebSocket 是从 HTML5 开始支持的一种网页端…

针对异构数据的联邦学习

在联邦学习中,数据异构性是指不同客户端之间的数据分布差异,包括数据的特征空间、标签空间以及数据量等方面的差异。处理异构数据是联邦学习中的一个重要挑战,因为异构数据可能导致模型训练过程中的性能不稳定、收敛速度较慢,甚至…

【判断自整除数】2022-4-6

缘由是判断自整除数的,这个我的结果是正确的,但是提交就有运行错误是怎么回事啊-编程语言-CSDN问答 void 自整除数字() {//所谓的自整除数字就是该数字可以整除其每一个位上的数字。 //对一个整数n,如果其各个位数的数字相加得到的数m能整除n,则称n为自…

@Import原理与实战

文章目录 前言一、导入普通类二、导入ImportSelector实现类三、导入ImportBeanDefinitionRegistrar实现类四、Import注解的解析4.1、解析实现ImportSelector的候选bean4.2、解析实现ImportBeanDefinitionRegistrar的候选bean4.3、DeferredImportSelector的特殊处理 总结 前言 I…

day 18进行聚类,进而推断出每个簇的实际含义

浙大疏锦行 对聚类的结果根据具体的特征进行解释,进而推断出每个簇的实际含义 两种思路: 你最开始聚类的时候,就选择了你想最后用来确定簇含义的特征, 最开始用全部特征来聚类,把其余特征作为 x,聚类得到…

Java并发编程实战 Day 11:并发设计模式

【Java并发编程实战 Day 11】并发设计模式 开篇 这是"Java并发编程实战"系列的第11天,今天我们聚焦于并发设计模式。并发设计模式是解决多线程环境下常见问题的经典解决方案,它们不仅提供了优雅的设计思路,还能显著提升系统的性能…

iview组件库:当后台返回到的数据与使用官网组件指定的字段不匹配时,进行修改某个属性名再将response数据渲染到页面上的处理

1、需求导入 当存在前端需要的数据的字段渲染到表格或者是一些公共的表格组件展示数据时的某个字段名与后台返回的字段不一致时,那么需要前端进行稍加处理,而不能直接this.list res.data;这样数据是渲染不出来的。 2、后台返回的数据类型 Datalist(pn) …

Ubuntu下有关UDP网络通信的指令

1、查看防火墙状态: sudo ufw status # Ubuntu 2、 检查系统全局广播设置 # 查看是否忽略广播包(0表示接收,1表示忽略) sysctl net.ipv4.icmp_echo_ignore_broadcasts# 查看是否允许广播转发(1表示允许&#xff09…

vue3:十六、个人中心-修改密码

一、页面效果 页面展示当前用户名(只读),展示需要输入的当前密码,输入新的密码以及确认密码的提交表单 二、初始建立 1、建立密码修改页面 在个人中心文件夹中写入新页面UpdatepwdView.vue 2、新建路由 在路由页面中写入修改密码页面 3、新建菜单 在菜单布局菜单页面中写…

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码,因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存,无论是github还是gittee,都是一种基于git去保存代码的形式,这样保存代码…

【Vue3】(三)vue3中的pinia状态管理、组件通信

目录 一、vue3的pinia 二、【props】传参 三、【自定义事件】传参 四、【mitt】传参 五、【v-model】传参(平常基本不写) 六、【$attrs】传参 七、【$refs和$parent】传参 八、provide和inject 一、vue3的pinia 1、什么是pinia? pinia …

【DAY43】复习日

内容来自浙大疏锦行python打卡训练营 浙大疏锦行 作业: kaggle找到一个图像数据集,用cnn网络进行训练并且用grad-cam做可视化 进阶:并拆分成多个文件

xtp+ctp 交易系统接口简介

CTP(上海期货交易所综合交易平台)和 XTP(中泰证券极速交易平台)是中国金融市场中两个重要的证券期货交易系统,它们在定位、架构和应用场景上有显著区别: 1. 开发主体与服务领域 维度CTPXTP开发公司上海期货…

阿里云Alibaba Cloud安装Docker与Docker compose【图文教程】

个人记录 进入控制台,找到定时与自动化任务 进入‘安装/卸载扩展程序’ 点击‘安装扩展程序’ 选择docker社区版,点击下一步与确定,等待一会 安装成功 查询版本 查询docker sudo docker version查询docker compose sudo docker compo…

非Root用户启动SSH服务经验小结

各位看官,小子我先问个问题:是不是经常在容器里想开个SSH,却发现自己不是root,处处碰壁?这是常态。多数容器镜像精简到连SSH服务都没有,就算有,咱们普通用户也没权限启动它。 今天小子就介绍一…

Windows开机自动启动中间件

WinSW(Windows Service Wrapper 是一个开源的 Windows 服务包装器,它可以帮助你将应用程序打包成系统服务,并实现开机自启动的功能。 一、下载 WinSW 下载 WinSW-x64.exe v2.12.0 (⬇️ 更多版本下载) 和 sample-minimal.xml 二、配置 WinS…

【CATIA的二次开发23】抽象对象Document涉及文档激活控制的方法

在CATIA VBA开发中,Document对象是最核心、最基础的对象之一。它代表了当前在CATIA会话中打开的一个文档(文件)。 几乎所有与文件操作、模型访问相关的操作都始于获取一个Document对象。Document对象包含多种方法和属性,以下介绍Document对象方法和属性 一、Document对象方…

基于多维视角的大模型提升认知医疗过程层次激励编程分析

系统架构设计 #mermaid-svg-k3W5lvie1sP3T956 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-k3W5lvie1sP3T956 .error-icon{fill:#552222;}#mermaid-svg-k3W5lvie1sP3T956 .error-text{fill:#552222;stroke:#55222…