pytest:指定测试用例执行顺序

在自动化测试中,测试用例的执行顺序有时对测试结果具有重要影响。本文将介绍如何在pytest框架中使用pytest-ordering插件以及Collection hooks来控制测试用例的执行顺序。

方式1: 使用pytest-ordering插件控制执行顺序

1.1 安装pytest-ordering插件

首先,需要安装pytest-ordering插件。可以通过pip命令安装:

pip install pytest-ordering
使用序号指定执行顺序

示例代码:

import pytest@pytest.mark.run(order=2)
def test_login():print("Executing test case:login")@pytest.mark.run(order=-1)
def test_create_order():print("Executing test case:create_order")@pytest.mark.run(order=1)
def test_register():print("Executing test case:register")

在这个示例中,首先执行test_register,其次执行test_login,最后执行create_order。
在这里插入图片描述

使用函数名指定执行顺序

示例代码:

import pytest@pytest.mark.run(after='test_register')
def test_login():print("Executing test case:login")@pytest.mark.run(after='test_login')
def test_create_order():print("Executing test case:create_order")@pytest.mark.run(order=1)
def test_register():print("Executing test case:register")

在这个示例中,首先执行test_register,其次执行test_login,最后执行create_order。
在这里插入图片描述

使用序数词指定执行顺序

安装插件后,可以通过用序数词(如first, second, third等)作为装饰器参数来指定测试用例的执行顺序。

示例代码:

import pytest@pytest.mark.run('last')
def test_create_order():print("Executing test case:create_order")@pytest.mark.run('second')
def test_login():print("Executing test case:login")@pytest.mark.run('first')
def test_register():print("Executing test case:register")

在这个示例中,首先执行test_register,其次执行test_login,最后执行create_order。

方式2:使用Collection hooks控制执行顺序

2.1 理解Collection hooks

Collection hooks是pytest的一个特性,允许在测试用例收集阶段进行自定义操作。可以通过实现pytest_collection_modifyitems钩子来控制测试用例的执行顺序。

2.2 实现Collection hooks

创建一个conftest.py文件,并在其中实现pytest_collection_modifyitems钩子,可以按参照以下代码,控制它们的执行顺序:

import pytestdef pytest_collection_modifyitems(config, items):# 根据需要对items进行排序specified_order = ["test_case_2", "test_case_1"] # 指定测试用例执行顺序items.sort(key=lambda x: specified_order.index(x.name.split("[")[0]) if x.name.split("[")[0] in specified_order else float('inf'))
测试用例示例

假设有两个测试用例test_case_1test_case_2

# test_case.py
def test_case_1():print("Executing test case 1")def test_case_2():print("Executing test case 2")
执行结果

在这里插入图片描述

3. 参考资料

  • pytest官方文档:https://docs.pytest.org/en/latest/
  • pytest-ordering插件文档:https://pypi.org/project/pytest-ordering/

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

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

相关文章

生命在于学习——Python人工智能原理(1.1)

说明:今年学一部分人工智能方向的知识,网安也会穿插,看后续如何将二者结合起来。 一、人工智能的基本知识 1、人工智能的起源 1956年美国达特茅斯学院召开了一个夏季论班,首次提出人工智能的概念。 1950年图灵提出了图灵测试&a…

springboot + Vue前后端项目(第十二记)

项目实战第十二记 1.写在前面2. 整合Echarts2.1 vue安装Echarts2.2 使用Echarts2.3 EchartsController编写2.4 Home.vue编写 总结写在最后 1.写在前面 本篇主要讲解系统整合Echarts 2. 整合Echarts 2.1 vue安装Echarts npm i echarts -S2.2 使用Echarts vue中使用echarts的…

Thinkphp5内核宠物领养平台H5源码

源码介绍 Thinkphp5内核流浪猫流浪狗宠物领养平台H5源码 可封装APP,适合做猫狗宠物类的发信息发布,当然懂的修改一下,做其他信息发布也是可以的。 源码预览 源码下载 https://download.csdn.net/download/huayula/89361685

React项目,结合 Antd 的Upload上传组件实现上传前校验

背景 最近工作中,遇到这样一个需求:在登录首页,开发一个上传文件的功能,用户可以在该页面点击该区域上传文件,但是点击前需要做一些判断,若用户未登录,则直接弹出登录弹框;否则&…

Python 开心消消乐

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

《德米安:彷徨少年时》

文前 我之所愿无非是尝试依本性而生活, 却缘何如此之难? 强盗 疏于独立思考和自我评判的人只能顺应现成的世俗法则,让生活变轻松。其他人则有自己的戒条:正派人惯常做的事于他可能是禁忌,而他自认合理的或许遭他人唾…

机器学习笔记(概念)

一.基础概念 1.机器学习的实质为:根据现有数据,寻找输入数据和输出数据的映射关系/函数 2.机器学习的任务: ​ 回归:输出为连续值 ​ 分类:输出为离散值 ​ 聚类:无标记信息的输出(例如根据瓜的外观分为两部分) …

自动驾驶技术现状与需求分析

随着科技的不断进步和智能化浪潮的席卷,自动驾驶技术已成为当今交通领域的热点话题。本文旨在深入探讨自动驾驶技术的当前发展状况,并对其未来的市场需求进行细致分析。首先,我们将回顾自动驾驶技术的起源、发展历程以及当前的技术水平&#…

探秘SpringBoot默认线程池:了解其运行原理与工作方式(@Async和ThreadPoolTaskExecutor)

文章目录 文章导图Spring封装的几种线程池SpringBoot默认线程池TaskExecutionAutoConfiguration(SpringBoot 2.1后)主要作用优势使用场景如果没有它 2.1版本以后如何查看参数方式一:通过Async注解--采用ThreadPoolTaskExecutordetermineAsync…

光储充一体化平台解决方案——慧哥充电桩开源系统

慧哥充电桩开源平台 慧哥充电桩开源系统 源码下载地址https://gitee.com/chouleng/lengzicharge-cloud 光储充一体化平台解决方案 一、项目背景和目标 随着新能源汽车的普及和可再生能源的发展,光储充一体化平台应运而生。该平台旨在整合光伏发电、储能系统和充电…

Linux - crond任务调度、at定时任务

1 crontab 进行-定时任务的设置 1)概述: 任务调度:是指系统在某个时间执行的特定的命令或程序。 任务调度分类: 系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等个别用户工作:个别用户可能希…

数据库(7)——DDL表操作2

添加字段 ALTER TABLE 表名 ADD 字段名 类型 [COMMENT 注释] [约束]; 可以观察到student_information表中成功添加了名为“class”的字段。 修改字段 修改数据类型 ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度); 修改字段名和字段类型 ALTER TABLE…

【机器学习与实现】支持向量机SVM

目录 一、SVM (Support Vector Machine) 概述(一)支持向量机SVM的主要特点(二)支持向量与间隔最大化(三)线性可分/不可分(四)软间隔 (soft margin) 与核技巧 (kernel trick)&#xf…

[集群聊天服务器]----(九)客户端开发

接着上文的[集群聊天服务器]----(八)群组类、群组操作接口以及业务模块之创建群组,加入群组以及群组聊天开发,项目真正操作,还需要客户端进行相关操作的,接下来我们剖析客户端的实现。 main函数 客户端主要对用户输入的消息进行…

5.21数据库mySQL

服务器存储信息的能力是有限的,需要将信息存储在磁盘上。 存在主要是两个问题,就是将数据从磁盘中读出数据来,将数据从服务器中存储到磁盘上。 那么接下来的问题就是如何对于数据进行存储方便于进行读取,数据库就是起这样的作用…

C++_C++11的学习

1. 统一的列表初始化 1.1{}初始化 在C98 中,标准就已经允许使用花括号 {} 对数组或者结构体元素进行统一的列表初始值设定。而到了C11,标准扩大了用大括号括起的列表 ( 初始化列表 )的使用范围,使其能适用于所有的内…

Python 获取当前IP地址(爬虫代理)

Python 获取当前IP地址(爬虫代理) 在Python中,获取当前的公网IP地址通常涉及到发送一个请求到外部服务,因为本地IP地址通常只在你的私有网络内部是可见的,而公网IP地址是由你的ISP(互联网服务提供商&#x…

J2SE+swing客户端开发进阶总结

Hello , 我是恒。分享一个练手项目一本糊涂账,顺便帮站长宣传一下站点https://how2j.cn 本项目是基于Swing和JDBC开发的图形界面桌面应用,通过这个项目能运用锻炼J2SE知识和技能 结构 ├───src/ │ ├───HutuMainFrame.java │ ├…

Java进阶学习笔记28——StringJoiner

Java中,有没有即能高效,又能实现更方便的拼接呢? StringJoiner: JDK8才开始的,跟StringBuilder一样,也是用来操作字符串的,也可以看成是一个容器,创建之后里面的内容是可变的。 好…

C++发票四要素真伪查验、数电票查验

在数字化转型的浪潮下,财务管理作为企业运营的核心环节之一,正经历着前所未有的变革。近期,随着发票查验接口技术的不断成熟与创新,翔云发票查验接口平台为企业提供了便捷、高效的发票查验服务,极大地提升了企业的财税…