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

46 篇文章 1 订阅
28 篇文章 1 订阅


请添加图片描述

前言

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

执行结果

在这里插入图片描述

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

需要休息的KK.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值