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…

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

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

Python 开心消消乐

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

《德米安:彷徨少年时》

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

机器学习笔记(概念)

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

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

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

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

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

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…

5.21数据库mySQL

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

C++_C++11的学习

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

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

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

Java进阶学习笔记28——StringJoiner

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

SpringBoot学习小结之RocketMQ

文章目录 前言一、架构设计1.1 架构图1.2 消息1.3 工作流程 二、部署2.1 单机2.2 集群 三、Springboot Producter3.1 准备3.2 pom依赖、yml 配置3.3 普通消息3.4 顺序、批量、延迟消息3.5 事务消息 四、Springboot Consumer4.1 配置4.2 普通Push消费4.3 回复4.4 集群和广播4.5 …

在Windows中安装Redis

一、下载Redis github链接:https://github.com/redis-windows/redis-windows/releases 二、安装 解压后点击start.bat文件即可启动服务 新开一个cmd窗口进入安装了Redis的文件夹输入redis-cli.exe -h 127.0.0.1 -p 6379连接Redis,见如下结果便是成功&…

sql-labs靶场环境搭建(手把手保姆级教学)

文章目录 一、sql-labs靶场简介:二、搭建过程1、资源下载2、配置文件;3、访问网站4、创建数据库 三、使用PhpStudy2018原因 一、sql-labs靶场简介: SQL-Labs 是一个实践环境,旨在用于数据库和 SQL(结构化查询语言&…

某大型制造集团企业信息化建设总体规划设计方案(67页PPT)

方案介绍: 随着信息技术的飞速发展,企业信息化建设已成为提高管理效率、增强企业竞争力的重要手段。某大型制造集团为应对市场变化、提升管理水平、优化资源配置,决定进行全面深入的信息化建设。本方案旨在构建一个集生产、管理、销售、物流…

【DevOps】Jenkins + Dockerfile自动部署Maven(SpringBoot)项目

环境 docker_host192.168.0.1jenkins_host192.168.0.2 jenkins_host构建完成后把jar发布到docker_host,再通过dockerfile自动构建镜像,运行镜像 1 Jenkins安装 AWS EC2安装Jenkins:AWS EC2 JDK11 Jenkins-CSDN博客 AWS EC2上Docker安装…

T113调试7寸RGB屏

文章目录 软硬件介绍软件板卡屏幕 调试修改内核设备树修改U-Boot设备树 测试添加启动logo其它问题总结 软硬件介绍 软件 基于Tina5.0 SDK。 板卡 韦东山的T113工业板&#xff1a; 屏幕 韦东山的7寸RGB电容触摸屏&#xff1a; 调试 修改内核设备树 打开内核设备树<…