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

📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)

📝 职场经验干货:

软件测试工程师简历上如何编写个人信息(一周8个面试)

软件测试工程师简历上如何编写专业技能(一周8个面试)

软件测试工程师简历上如何编写项目经验(一周8个面试)

软件测试工程师简历上如何编写个人荣誉(一周8个面试)

软件测试行情分享(这些都不了解就别贸然冲了.)

软件测试面试重点,搞清楚这些轻松拿到年薪30W+

软件测试面试刷题小程序免费使用(永久使用)


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

  # test_case.py
  def test_case_1():
      print("Executing test case 1")
  def test_case_2():
      print("Executing test case 2")

执行结果

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值