Pytest精通指南(23)钩子函数-执行顺序(pytest-ordering)

news2024/11/16 8:40:32

文章目录

      • 前言
      • 应用场景
      • 插件安装
      • 参数分析
      • 装饰方法
      • 装饰类
      • 装饰模块


请添加图片描述

前言

pytest-ordering 是一个pytest插件,它允许用户自定义测试用例的执行顺序。

默认情况下,pytest会按照模块、类、函数定义的顺序以及它们的名称的字母顺序来执行测试用例。

但通过使用 pytest-ordering,我们可以覆盖这种默认行为,精确地控制哪些测试用例应该首先执行,哪些应该稍后执行。

应用场景

  • 测试前置条件:确保在执行测试之前满足某些条件,例如创建数据库记录、登录用户等。
  • 资源管理:在多个测试之间共享资源时,确保资源按正确的顺序被分配和释放。
  • 依赖测试:确保先运行那些其他测试所依赖的测试。

插件安装

安装命令pip install pytest-ordering

在这里插入图片描述

参数分析

pytest-ordering插件主要通过装饰器来指定测试用例的执行顺序

  • @pytest.mark.run(order=N)order 参数用于指定测试用例的执行顺序。数字越小,优先级越高,测试用例越早执行
  • @pytest.mark.first:这个装饰器将测试用例标记为第一个执行(高版本已经弃用)
  • @pytest.mark.last:这个装饰器将测试用例标记为倒数第一个执行(高版本已经弃用)
  • 优先级:order=0 > order=正数 > 无order > order=负数。

装饰方法

示例代码

import pytest


def test_a():
    assert 1 == 1


def test_b():
    assert 2 == 2


# 按照order执行
@pytest.mark.run(order=2)
def test_c():
    assert 3 == 3


# 在first标记之后第一条执行
@pytest.mark.run(order=1)
def test_d():
    assert 4 == 4


# 无论如何都是第一条执行
@pytest.mark.first
def test_e():
    assert 5 == 5


# 无论如何都是最后一条执行
@pytest.mark.last
def test_f():
    assert 6 == 6

执行结果

在这里插入图片描述

装饰类

示例代码

import pytest


def test_a():
    assert 1 == 1


def test_b():
    assert 2 == 2


# 不在推荐使用first或last排列测试用例的执行顺序
@pytest.mark.run(order=2)
class TestClassDemo1:

    def test_c(self):
        assert 3 == 3

    def test_d(self):
        assert 4 == 4


# @pytest.mark.run(order=1)
class TestClassDemo2:

    def test_e(self):
        assert 5 == 5

    @pytest.mark.run(order=1)
    def test_f(self):
        assert 6 == 6

执行结果

在这里插入图片描述

装饰模块

test_case_01.py文件代码

import pytest


@pytest.mark.run(order=1)
# 按照定义的顺序执行
def test_a():
    assert 1 == 1


# 按照定义的顺序执行
def test_b():
    assert 2 == 2

test_case_02.py文件代码

import pytest

# 模块类标记
pytestmark = pytest.mark.run(order=1)


def test_a():
    assert 1 == 1


def test_b():
    assert 2 == 2


class TestClassDemo1:

    def test_c(self):
        assert 3 == 3

    def test_d(self):
        assert 4 == 4


class TestClassDemo2:

    def test_e(self):
        assert 5 == 5

    def test_f(self):
        assert 6 == 6

执行结果

在这里插入图片描述

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

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

相关文章

Kafka集群搭建可视化指南

欢迎来到我的博客,代码的世界里,每一行都是一个故事 Kafka集群搭建可视化指南 前言准备工作硬件要求环境准备 kafka集群的部署与配置3.1 单节点部署与多节点集群搭建单节点部署:多节点集群搭建: 3.2 Broker配置与优化3.3 Topic的创…

竞赛 基于LSTM的天气预测 - 时间序列预测

0 前言 🔥 优质竞赛项目系列,今天要分享的是 机器学习大数据分析项目 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/po…

C++:面向对象大坑:菱形继承

菱形继承 1.单继承1.概念 2.多继承2.1概念2.2菱形继承1.概念2.问题3.样例理解二义性数据冗余对于内存模型抽象化 2.3菱形虚拟继承(解决菱形继承的问题)1.概念2.样例理解对于内存模型抽象化 2.4总结 3.问题总结1.C有多继承,为什么?…

react中useState的值没有改变,而是旧的数值

问题背景 想实现点击按钮就改变数据的效果,但是在控制台的打印结果,总是上一次的修改情况,并不是最新的修改后的数据 代码: import { useState, useRef } from "react";// 实现sonA的数据传递给sonB const SonA () …

史上最全的四分之一、半车再到全车7自由度常规悬架建模与仿真之一

一、悬架建模的简化过程 汽车是一个复杂的振动系统,针对不同的需求进行不同的简化。在对悬架振动分析中,把汽车车身看做一个刚体,把驾驶员座椅和驾驶员拿掉;车身以下至车轮之间的橡胶垫,连接杆,弹簧等具有…

智慧化转型赋能园区创新:科技创新引领产业智慧化,打造高效发展新格局

在全球化和信息化浪潮的推动下,园区作为区域经济发展的重要引擎,正面临着前所未有的机遇与挑战。为应对这些挑战并把握机遇,园区需积极拥抱智慧化转型,通过科技创新引领产业智慧化,打造高效发展的新格局。本文将深入探…

Unity面向切面编程

一直说面向AOP(切面)编程,好久直接专门扒出理论、代码学习过。最近因为某些原因😭还得再学学造火箭的技术。 废话不多说,啥是AOP呢?这里我就不班门弄斧了,网上资料一大堆,解释的肯定…

HTML的学习-通过创建相册WEB学习HTML-第一部分

文章目录 一、设置中文1.1、添加中文插件1.2、配置显示中文语言 二、学习开始2.1、创建项目文件夹2.2、h1标签示例:生成HTML框架示例:添加h1标签 2.3、h2标签示例:在h1标签下添加h2标签 2.4、h1标签到h6标签层次解析2.5、p标签示例&#xff1…

LORA被碾压了?多任务学习新突破,MTLoRA实现3.6倍参数高效适配

引言:多任务学习的挑战与机遇 在深度学习领域,将大规模数据集上预训练的模型适配到各种下游任务是一种常见的策略。随之而来的是参数高效微调方法的兴起,这些方法旨在将预训练模型适配到不同任务,同时只训练最少量的参数。然而&am…

力扣HOT100 - 148. 排序链表

解题思路: 归并排序 class Solution {public ListNode sortList(ListNode head) {if (head null || head.next null) return head;ListNode fast head.next, slow head;while (fast ! null && fast.next ! null) {slow slow.next;fast fast.next.nex…

基于瞬时频率的语言信号清/浊音判决和高音检测(MATLAB R2021)

语音是由气流激励声道从嘴唇或鼻孔辐射出来而产生的。根据声带是否振动,发音可分为浊音和清音。浊音和清音有明显的区别,浊音具有周期信号的特征,而清音则具有随机噪声的特征;浊音在频域上具有共振峰结构,其能量主要集…

幻方量化开源国内首个MoE大模型,全新架构、免费商用

幻方量化开源国内首个MoE大模型,全新架构、免费商用 OSC OSC开源社区 2024-01-12 19:01 广东 幻方量化旗下组织深度求索发布了国内首个开源 MoE 大模型 —— DeepSeekMoE,全新架构,免费商用。 今年 4 月,幻方量化发布公告称&…

PTA 编程题(C语言)-- 统计字符

题目标题:统计字符 题目作者:颜晖 浙大城市学院 本题要求编写程序,输入10个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。 输入格式: 输入为…

使用YOLOv8训练自己的目标检测数据集(VOC格式/COCO格式)

yolov8训练自己的数据集 1. 下载项目2. 搭建环境3. 数据集格式转换3.1 VOC格式转YOLO格式3.2 COCO格式转YOLO格式 4. 训练数据5. 推理预测6. 模型导出 1. 下载项目 git clone https://github.com/ultralytics/ultralytics.git2. 搭建环境 conda create --name ultralytics py…

js微博发布案例

思路: 需求1:检测用户输入的字数 注册input事件 将输入文本长度赋值给对应的数值 需求2:输入不能为空 点击按钮之后判断 如果输入为空,则提示不能输入为空,并直接return 为了防止无意义的一些输入,利用字符…

NLP预训练模型-GPT-3

ChatGPT GPT-3是OpenAI开发的一个自然语言处理(NLP)预训练模型。GPT代表“生成式预训练变换器”(Generative Pretrained Transformer)。GPT-3是GPT系列的第三代模型,是一种采用了深度学习技术的强大语言模型&#xff…

C++:类与对象完结篇

hello,各位小伙伴,本篇文章跟大家一起学习《C:运算符重载》,感谢大家对我上一篇的支持,如有什么问题,还请多多指教 ! 文章目录 重新认识构造函数1.初始化列表2.explicit关键字 static成员1.sta…

通信原理(1)--信息的度量,通信系统的性能指标

通信原理(1)–信息的度量,通信系统的性能指标 1.1通信的基本概念 消息、信息与信号通信系统的组成模型数字通信的特点通信系统的分类通信的方式 1.1.1通信的发展 1.1.2消息、信息与信号 消息的定义 消息是通信系统要传输的对象,包含连续消息和离散…

车控操作系统

车控操作系统 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看…

从 Android 恢复已删除文件的 3 种简单方法

如何从 Android 恢复已删除的文件?毫不犹豫,有些人可能会认为从 Google 备份恢复 Android 文件太容易了。但是,如果删除的文件未同步到您的帐户或未备份怎么办?您错误的恢复可能会永久删除您想要的数据。因此,我们发布…