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

news2024/11/17 16:21:54

在自动化测试中,测试用例的执行顺序有时对测试结果具有重要影响。本文将介绍如何在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 pytest

def 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.coloradmin.cn/o/1700261.html

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

相关文章

Android Studio开发之路(十三)主题影响Button颜色问题解决及button自定义样式

一、问题描述 在开发过程中发现安卓的默认主题色是紫色,并且会导致button也是紫色,有时直接在xml布局文件中直接设置button的背景色或者设置背景图片不起效果 方案一、如果是app,可以直接设置主题颜色 比如,将主题设置为白色&a…

【STM32】 独立看门狗配置方法

什么是看门狗 看门狗(watchdog)指的是一种监控系统或程序,用于定期检测和监控其他系统或程序的运行状态,并在出现问题或故障时采取相应的措施。它可以是硬件设备,也可以是软件程序。 在计算机领域中,看门狗…

Java Swing + MySQL图书借阅管理系统

系列文章目录 Java Swing MySQL 图书管理系统 Java Swing MySQL 图书借阅管理系统 文章目录 系列文章目录前言一、项目展示二、部分代码1.Book2.BookDao3.DBUtil4.BookAddInternalFrame5.Login 三、配置 前言 项目是使用Java swing开发,界面设计比较简洁、适合作…

Taipy快速打造数据驱动的Web应用

Taipy: 用Taipy,让数据洞察与应用开发无缝对接- 精选真开源,释放新价值。 概览 Taipy快速打造数据驱动的 Web 应用。这是一个基于 Python 和 Flask 的项目,结合了 React 等前端技术,为开发者提供了一个简洁、高效的开…

【计算机毕业设计】基于SSM+Vue的新能源汽车在线租赁管理系统【源码+lw+部署文档】

摘 要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,新能源汽车在线租赁当然也不能排除在外。新能源汽车在线租赁是以实际运用为开发背景,运用软件工程开发方法&…

docker安装Elasticsearch(ES)详细教程

使用Docker来安装Elasticsearch(简称ES)的详细教程如下: 1. 前提条件 确保你的系统已经安装了Docker,并且Docker服务正在运行。如果你使用的是Windows系统,还需要确保已经启用了Hyper-V和容器功能。 2. 拉取Elastic…

AOP、注解、EL表达、若依权限,Security原理综合分析

AOP、注解、EL表达、若依权限,Security原理综合分析 案例一:更新、创建增强 需求产生 每个表中均有创建时间、创建人、修改时间、修改人等字段。 在操作时候手动赋值,就会导致编码相对冗余、繁琐,那能不能对于这些公共字段在某…

【c++基础】和谐分组

题目描述 s 班共有 n 名学生,按照学号从 1 到的顺序每名学生的身高分别为 a[1],a[2]...a[n]。由于是新学期,s 班需要进行分组,分组的要求如下: 进行分组的组数不能超过 k。 每组的人的学号必须相邻。 由于身高差过大的人分在同一…

今天又一次在金边搬家了

target:离开柬埔寨倒计时-220day 前言 前天,银行的行政告诉我之前住的地方那个中介说房东不租了,重新给我租了个地方,还是在同一栋楼,只是楼层和房间不一样,今天搬了好多躺呀… 周末的日子 昨天下午 同事&…

2024 在Pycharm管理数据库

2024 在Pycharm管理数据库 Pycharm 社区版DataBase Navigator 数据库管理插件(Plugins)安装使用(sqlite为例添加数据) 文章目录 2024 在Pycharm管理数据库一、Pycharm数据库配置1、Database Navigator插件安装2、连接数据库 二、数据库使用1、插件自带基本操作2、控制台操作 …

linux centos循环ping网段ip

循环ping,检测ip是否可用,ping通为正在使用yes,no为不通 vim test.sh#!/bin/bash ip"192.168.1."echo "ping log:" > ./ping.txt for i in {1..128} doping -c 1 -w 1 -W 1 $ip$i | grep -q "ttl" &&a…

Redis崩溃后,如何进行数据恢复的?no.24

本课时我们主要学习通过 RDB、AOF、混合存储等数据持久化方案来解决如何进行数据恢复的问题。 Redis 持久化是一个将内存数据转储到磁盘的过程。Redis 目前支持 RDB、AOF,以及混合存储三种模式。 RDB Redis 的 RDB 持久化是以快照的方式将内存数据存储到磁盘。在…

【数据结构与算法 经典例题】相交链表

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:数据结构与算法刷题系列(C语言) 期待您的关注 目录 一、问题描述 二、解题思路 方法一:双循环对比法 方…

Minecraft服务器如何搭建

Minecraft这是原版英文名称,在中国大陆被译为《我的世界》,这款游戏很火爆。台湾的很多小伙伴也在玩,其译名为《我的创世神》。现在这款游戏在国内已经被网易代理了。因为这款游戏开源,所以任何人都可以搭建服务器端,如…

群晖nas连接(路由器设置)--群晖配置下文

目录 前言 本文目的与核心 一、打开IPV6和关闭防火墙 路由器后台 二、打开群晖查看是否有ipv6和记住ipv4地址 群晖后台界面 三、路由器设置端口转发 路由器后台 四、打开DDNS-GO的配置页面查看是否配置生效成功 群晖另一个配置后台 五、访问测试 前言 群晖配置上…

Java整合ELK实现日志收集 之 Elasticsearch、Logstash、Kibana

简介 Logstash:用于收集并处理日志,将日志信息存储到Elasticsearch里面 Elasticsearch:用于存储收集到的日志信息 Kibana:通过Web端的可视化界面来查看日志(数据可视化) Logstash 是免费且开放的服务器端数…

尼姆游戏(人机对战)-Python

1.实验要求 编写程序设计和实现聪明的尼姆游戏(人机对战)。尼姆游戏是个著名的游戏,有很多变种玩法。两个玩家轮流从一堆物品中拿走一部分。在每一步中,玩家可以自由选择拿走多少物品,但是必须至少拿走一个并且最多只…

保险业务管理系统的设计与实现(论文 + 源码)

保险业务管理系统.zip资源-CSDN文库https://download.csdn.net/download/JW_559/89361419 保险业务管理系统的设计与实现 摘要 历经二十余年的高速发展,我国保险行业的市场竞争已经达到白热化的程度,在同一个城市往往有数十家主体参与保险业务的竞争。保…

一款颜值颇高的虚拟列表!差点就被埋没了,终于还是被我挖出来了

大家好,我是晓衡! 今天,推荐一款颇有颜值的虚拟列表组件,不然真的被埋没就可惜了! 我们先来看下效果: 感觉怎么样?还不错吧! 为什么说这个资源差点被埋没呢?因为个朋友找…

echarts饼图图例右侧纵向排列

如图所示,一开始,我设置了图例的right和top值,还有orient,但图例始终不能纵向排成一排,要么上面两个一行,要么最后两个一行,最后我发现同时设置一下left的值就可以了,如下所示&#…