Skip to content

Pytest 测试用例执行顺序自定义
pytest-order


简介

pytest-order 是一个 Pytest 插件,可自定义 Pytest 测试用例的执行顺序。

这对于确保特定测试用例在其他测试用例之前或之后运行非常有用。


使用场景

对于集成测试,经常会有上下文依赖关系的测试用例。这些步骤往往需要按顺序执行。

  • 登录
  • 创建订单
  • 支付订单
  • 查询订单

安装插件

pytest-order 是目前社区主流推荐的执行顺序插件。

pip install pytest-order

基本使用

  • 指定执行顺序:

  • order 值越小

  • 优先级越高
  • 越先执行
import pytest


@pytest.mark.order(2)
def test_b():
    print("test_b")


@pytest.mark.order(1)
def test_a():
    print("test_a")

示例代码

  • 执行顺序:

  • test_login

  • test_create_order
  • test_pay
import pytest


@pytest.mark.order(3)
def test_pay():
    print("支付订单")
    assert True


@pytest.mark.order(1)
def test_login():
    print("用户登录")
    assert True


@pytest.mark.order(2)
def test_create_order():
    print("创建订单")
    assert True

默认执行顺序

在未使用 pytest-order 时:

pytest 默认按照代码从上到下执行。


指定 first 和 last

除了数字顺序。还支持 first 和 last。

@pytest.mark.order("first")
def test_login():
    pass


@pytest.mark.order("last")
def test_logout():
    pass


def test_create_order():
    pass

运行演示

pytest -vs

执行结果:

test_login PASSED
test_create_order PASSED
test_pay PASSED

注意事项

  • 不建议大量依赖执行顺序
  • 自动化测试尽量保持独立
  • order 更适合集成测试
  • 不适合完全独立的单元测试

总结

  • pytest-order 用于控制测试执行顺序
  • 使用方式:@pytest.mark.order(1)
  • order 值越小越先执行
  • 更适合集成测试场景