Pytest用例执行的先后顺序

news2024/9/25 11:21:23

在这里插入图片描述

[内部资源] 想拿年薪30W+的软件测试人员,这份资料必须领取~

温馨提示

「本篇约1600字,看完需3-5分钟,学习学半小时,加油!」

先看普通函数运行顺序

import pytest

def test_one():
    print("我是清安")

def test_02():
    print("--02--")

def test_a():
    print("--a--")

def test_a_1():
    print("--a_01__")

def test_01():
    print("--01--")

图片

可以看到,这样写,用例的运行先后顺序根据自己写的先后函数顺序进行执行的。那么写到类中呢?

import pytest

class Testcase:
    def test_one(self):
        print("我是清安")

    def test2(self):
        print("--02--")

    def test_a(self):
        print("--a--")

    def test_a_1(self):
        print("--a_01__")

    def test1(self):
        print("--01--")

图片

没有丝毫变化。

模块用例运行先后顺序

首先准备两个.py文件,名称为test_a,test_b。内容如下:

import pytest

class Test_a:
    def test_a1(self):
        print(f"我是-{__class__.__name__}-类")
import pytest

class Test_b:
    def test_b1(self):
        print(f"我是-{__class__.__name__}-类")

图片

看,是有先后顺序的。其实你也可以理解为是Pycharm已经事先排过一次顺序了,按a-z亦或者1-9这样的顺序已经排过了,因为,你在创建.py文件的时候,就已经产生了顺序,pytest只是按照特定顺序进行测试而已。

前置后置

import pytest

class Testcase():
    def setup(self):
        """每个方法用例运行前运行"""
        print("---1-set---")

    def teardown(self):
        """每个方法用例运行后运行"""
        print("---1-down---")

    def setup_class(self):
        """每个 class 运行前运行(只运行一次)"""
        print("---2-set class---")

    def teardown_class(self):
        """每个 class 运行后运行(只运行一次)"""
        print("---2-down class---")

    def test_02(self):
        print("--02--")

    def test_01(self):
        print("--01--")

图片

它会告诉你teardowm在后续准备取消了,建议改用teardowm_method,改完后再跑,就不会出现这种警告了。(「setup改setup_method以及teardowm改teardowm_method此处需自己改动」)

图片

前置后置是不计入用例的,它只会默默的奔跑。并且它不会像unittest一样根据用例的名称来自动判断执行用例的先后顺序。它有自己的方式方法。

💥注意看优先级,以及代码中的注释,setup_class先运行,并且直到代码全部跑完,teardown_class才运行,其中setup_method以及teardowm_method每个用例运行的时候前后都会运行一次。

用例先后顺序设定

这就需要用到第三方插件了

pip install pytest-ordering
import pytest

class Testcase():
    def setup_method(self):
        """每个方法用例运行前运行"""
        print("---1-set---")

    def teardown_method(self):
        """每个方法用例运行后运行"""
        print("---1-down---")

    def setup_class(self):
        """每个 class 运行前运行(只运行一次)"""
        print("---2-set class---")

    def teardown_class(self):
        """每个 class 运行后运行(只运行一次)"""
        print("---2-down class---")

    def setup_module(self):
        """模块运行前运行(只运行一次)"""
        print("---3-module class---")

    def teardown_module(self):
        """模块运行后运行(只运行一次)"""
        print("---3-module class---")
        
    @pytest.mark.run(order=2)
    def test_02(self):
        print("--02--")

    @pytest.mark.run(order=1)
    def test_01(self):
        print("--01--")

图片

如上简单的小测试,以便于了解。接下来详细说说!

源码小片段

orders_map = {
    'first': 0,
    'second': 1,
    'third': 2,
    'fourth': 3,
    'fifth': 4,
    'sixth': 5,
    'seventh': 6,
    'eighth': 7,
    'last': -1,
    'second_to_last': -2,
    'third_to_last': -3,
    'fourth_to_last': -4,
    'fifth_to_last': -5,
    'sixth_to_last': -6,
    'seventh_to_last': -7,
    'eighth_to_last': -8,
}

上述是源码中对于优先级

一个小示范

import pytest

class Testnew:

    @pytest.mark.second
    def testa_02(self):
        print("--02--")

    @pytest.mark.third
    def testa_03(self):
        print("--03--")

    @pytest.mark.fourth
    def testa_04(self):
        print("--04--")

    @pytest.mark.first
    def testa_01(self):
        print("--01--")

图片

鉴于上述,运行的时候会提示一系列的信息(此处不展示),看着不爽,可以:

import pytest


class Testnew:

    @pytest.mark.run(order=2)
    def testa_02(self):
        print("--02--")

    @pytest.mark.run(order=3)
    def testa_03(self):
        print("--03--")

    @pytest.mark.run(order=4)
    def testa_04(self):
        print("--04--")

    @pytest.mark.run(order=1)
    def testa_01(self):
        print("--01--")

图片

当然上述代码中你也可以写入负数,也是可以的。

执行特定的用例

也就是前面讲过的-k参数。一起看看

import pytest

class Test_new:
    def test_b2(self):
        print("**b2**")

    def test_b1(self):
        print("**b1**")

    def test_a1(self):
        print("--a1--")

    def test_a2(self):
        print("--a2--")

图片

它可以帮助我们过滤掉一些不想运行的用例,也是一个很不错且比较常用的参数。


资源分享【这份资料必须领取~】

下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

React学习27(react-redux多组件共享数据)

项目结构 准备工作 1)定义一个person组件,和count组件通过redux共享数据 2)为person组件编写:reducer ,action和contant常量 3)重点:Person的reducer和Count的reducer要用combineReducers进行…

深度学习-优化器

优化器 文章目录优化器1. 引言1. SGD1.1 vanilla SGD1.2 SGD with Momentum1.3 SGD with Nesterov Acceleration2. AdaGrad3. RMSProp4. AdaDelta5. Adam优化器选择出处1. 引言 优化算法可以分成一阶优化和二阶优化算法,其中一阶优化就是指的梯度算法及其变种&#…

Linux——vi,vim的使用

三种模式 正常模式 以vi或vim打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中,你可以使用 【上下左右】 按键来移动光标,你可以使用 【删除字符】或 【删除整行】来处理档案内容,也可以使用 【复制,粘贴】来处…

3D激光里程计其三:点云畸变补偿

3D激光里程计其三:点云畸变补偿1. 产生原因2. 补偿方法Reference: 深蓝学院-多传感器融合 1. 产生原因 一帧点云:通常指雷达内部旋转一周扫描得到的点的集合。 优点:有足够数量的点云才能进行匹配,且一周正好是周围环境的完整采…

认识Java中的异常处理

文章目录Java异常处理异常体系的介绍常见运行时异常常见编译时异常Java异常处理 异常体系的介绍 什么事异常处理? 异常是程序在“编译”或者“执行”的过程中可能出现的问题,比如: 数组索引越界、空指针异常、 日期格式化异常,等… 注意:语…

常用损失函数

常见损失函数 文章目录常见损失函数引言回归1. 均方差2.平均绝对误差(MAE)3. 均方根误差(RMSE)4. 交叉熵分类二分类多分类引言 无论在机器学习还是深度领域中,损失函数都是一个非常重要的知识点。损失函数(Loss Function)是用来估量模型的预测值 f(x) 与…

Eslint 8.23 Flat Config 新配置迁移升级指南

前言 直入正题,eslint 目前为止的配置文件格式( 如 .eslintrc.js ) 存在很多无法避免的历史问题: 配置格式混乱,层层不明确的继承,不易理解。 插件配置时不支持实体运用(不能传 function / ob…

学完框架后的反思—为什么要使用框架?

学习前端也有一定的时间了,最近在网上看到了一个问题让我反思了很久——为什么要使用前端框架? 我发现自己当初学习框架时并没有想那么多,只是看中了其在业界企业的应用,大部分公司开发页面基本上都是使用框架进行开发的,而最为被大厂广泛接受的就是 React 框架,所以我当…

二棕榈酰磷酯酰乙醇胺-聚乙二醇-叠氮 DPPE-PEG-N3简介,可用于药物传递、基因转染和生物分子修饰。

二棕榈酰磷酯酰乙醇胺-聚乙二醇-叠氮 DPPE-PEG-N3 中文名称:二棕榈酰磷酯酰乙醇胺-聚乙二醇-叠氮基 英文名称:DPPE-PEG-N3 英文别名: 1,2-dipalmitoyl-sn-glycero-3-phosphoethanolamine-PEG-Azide 分子量(PEG)&a…

Linux——任务调度

at定时任务 基本介绍 at命令是一次性定时计划任务,at地守护线程atd会以后台模式运行,检查作业队列来运行默认情况下,atd守护进程没60秒检查作业队列,有作业时,会检查作业运行时间,如果时间于当前时间匹配…

Dubbo 1 分布式系统中的相关概念 1.2 集群和 分布式

Dubbo 【黑马程序员Dubbo快速入门,Java分布式框架dubbo教程】 1 分布式系统中的相关概念 文章目录Dubbo1 分布式系统中的相关概念1.2 集群和 分布式1.2.1 集群和分布式1.2.2 集群和分布式 【互联网 中】1.2 集群和 分布式 1.2.1 集群和分布式 集群:很…

使用synchornized和ReentrantLock来解决并发错误

文章目录什么是并发错误?并发错误是如何产生的?演示并发错误如何解决并发错误使用synchornized解决并发错误使用ReentrantLock解决并发错误什么是并发错误? 多个线程共享操作同一个对象的时候,线程体当中连续的多行操作未必能够连…

下个文档还要马内?还好我会Python,教大家来一手强制复制粘贴

前因后果 公司有人阳了,今天在家上班,突然小姨子就问我有没有baidu文库会员,想下载点东西,我心想这还要会员?用Python不是分分钟的事情! 然后我非常自信的告诉她不用会员随便下载,结果她顺势想…

10两级电力市场环境下计及风险的省间交易商最优购电模型

参考文章: 两级电力市场环境下计及风险的省间交易商最优购电模型—郭立邦(电网技术2019) 主要内容: 为进一步推动电力市场建设,促进电力资源大范围优化配置,我国正逐步建成包含省间与省内电力交易的两级…

齿轮魔方、五阶齿轮魔方

齿轮魔方 1,魔方三要素 (1)组成部件 部件和三阶魔方完全对应,但每个棱块的朝向不止2种,而是有6种。 (2)可执行操作 只有3种操作,即上下层同时旋转180度、左右180度、前后180度。…

一文助你快速理解Cookie,Session,Token的区别

目录 一、Cookie简介 1.1.cookie定义 1.2.cookie鉴权原理 1.3.cookie的分类 二、Session简介 2.1.session的定义 2.2.session会话机制 2.3.Session 的缺点 三、cookie与session区别 3.1.存储位置 3.2.安全性 3.3.占用服务器资源 3.4.存储空间 3.5.存储类型 3.6.…

编程入门宝典,刚开始学习编程新手必看的5点建议!

编程就像围城,城里的人想出去,城外的人想进来。 对于零基础的小白,要杀入代码的战场需要准备好哪些东西呢?最帅的萌宝在此给大家分享5点建议。 1、选择编程语言 编程首要还是选择好适合自己的语言。 编程语言有:C/C、java、VB、P…

零基础学Python:编程规范

1. 注释 python注释也有自己的规范,在文章中会介绍到。注释可以起到一个备注的作用,团队合作的时候,个人编写的代码经常会被多人调用,为了让别人能更容易理解代码的通途,使用注释是非常有效的。 在说规范之前我们有必…

微服务综合部署——SpringBoot项目制作Docker镜像注册在Zookeeper并利用K8S技术部署

一、如果你要从头开发一个基于微服务架构的项目,项目中的服务最终要部署在k8s管理的镜像环境中,你认为应如何创建项目?与本次实验过程相比,哪些改进可以让开发更加合理高效? 第一步:搭建项目并制作合适的j…

回溯算法总结

目录介绍伪代码例题:解释:回溯算法中的优化去重伪代码剪枝常见题型子集例题全排列例题参考资料介绍 递归(DFS)是一个劲的往某一个方向搜索,而回溯算法建立在 DFS 基础之上的,但不同的是在搜索过程中,达到结束条件后&am…