当前位置: 首页 > article >正文

3种方法,教你用Pytest更改自动化测试用例执行顺序

在自动化测试中,自动化测试用例设计原则就是:执行过程时不能存在依赖顺序。那么如果测试用例需要按照指定顺序执行,这个时候应该怎么做呢?

目前单元测试框架中UnitTest没有办法改变测试用例的执行顺序,但是另一个单元测试框架Pytest可以做到,辅助测试人员更改测试用例的执行顺序。

今天小编简单的介绍几种方法,教你如何通过Pytest进行更改自动化测试用例的执行顺序。

pytest

Pytest的执行顺序想必大家都清楚,是通过ascii码进行收集的,然后通过文件中从上往下的执行顺序进行运行,我们只需要将我们的测试用例在编写时,按照从上往下的顺序进行编写。

 
  1. # coding:utf-8

  2. import pytest

  3. def test_a():

  4. print('测试用例01')

  5. def test_b():

  6. print('测试用例02')

  7. def test_c():

  8. print('测试用例03')

通过运行后发现,顺序是按照从上往下的顺序依次执行。

pytest-ordering

pytest-ordering属于Pytest的一个插件,其目的就是帮助我们控制自动化测试用例的执行顺序,而且使用起来也比较简单。

安装:pip install pytest-ordering

使用方法

使用方法比较简单,我们只需要在编写好的测试用例前加上一个装饰器,然后通过改变装饰器传入的参数进行控制其用例执行的顺序。

小编这里拿到上方的用例,我们将从下往上的执行。

 
  1. # coding:utf-8

  2. import pytest

  3. @pytest.mark.run(order=3)

  4. def test_a():

  5. print('测试用例01')

  6. @pytest.mark.run(order=2)

  7. def test_b():

  8. print('测试用例02')

  9. @pytest.mark.run(order=1)

  10. def test_c():

  11. print('测试用例03')

通过执行测试用例会很清楚的看到,我们已经将测试用例的执行顺序改变了。

pytest_collection_modifyitems

pytest_collection_modifyitems属于Pytest的钩子函数,这个函数可以收集我们的测试用例,收集完成后可以对其进行一些修改和排序功能,下面小编简单的介绍该使用方法。

使用方法

首先需要将pytest_collection_modifyitems这个函数放入到conftest.py文件中,然后对其进行二次开发,这里小编通过倒叙的形似修改了收集到的测试用例,从而改变测试用例的执行顺序。

 
  1. # conftest.py

  2. # coding:utf-8

  3. def pytest_collection_modifyitems(session, items):

  4. print("收集到的测试用例:%s"%items)

  5. # 修改执行顺序

  6. items.reverse()

  7. for i in items:

  8. print('收集到测试用例名称:%s' %i.name)

编写3个简答的测试用例,通过命令行的方式进行运行,并且会发现也将我们的测试用例顺序改变和收集到了我们的测试用例相关信息。

 
  1. # coding:utf-8

  2. import pytest

  3. def test_a():

  4. print('测试用例01')

  5. def test_b():

  6. print('测试用例02')

  7. def test_c():

  8. print('测试用例03')

总结

小编通过简单的案例介绍了如何在Pytest中改变测试用例的执行顺序。

当然上述方法并不是唯一的方法,只是提供一个简单的思路,小编还是希望大家编写测试用例时注意不要互相依赖,这样的话执行顺序就可以随机执行,保证我们的测试用例不受其他用例的干扰而成功执行。

感谢您的阅读,希望本篇文章对您有所帮助。

 

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取   


http://www.kler.cn/news/364574.html

相关文章:

  • 数据类型【MySQL】
  • h5页面与小程序页面互相跳转
  • 腾讯会议pc端3.29.11开启悬浮窗口
  • Windows 使用命令行开启热点(无线网卡连接下)
  • Vue入门示例
  • 【Linux】总线-设备-驱动模型
  • 192×144像素是几寸照片?如何手机拍照制作
  • 【python实操】python小程序之参数化以及Assert(断言)
  • General Purpose I/O Ports and Peripheral I/O Lines (Ports)
  • JVM成神之路
  • 测试学习-测试分类
  • Spring Boot框架中小企业设备监控系统开发
  • c++中虚函数表属于类还是属于对象?
  • Ubuntu20.04 更新Nvidia驱动 + 安装CUDA12.1 + cudnn8.9.7
  • 【数据结构与算法】力扣 46. 全排列
  • 中国人寿财险青岛市分公司引领科技金融新风尚
  • HarmonyOS 5.0应用开发——应用打包HAP、HAR、HSP
  • 新160个crackme - 082-phox.1
  • Elasticsearch在分布式集群中进行数据分片的策略能否完全避免数据热点?数据分片分布不均会导致性能瓶颈吗?如何通过实践优化分片分布?
  • 本地生活平台开发搭建方案 同城O2O电商平台推广运营
  • OpenCV视觉分析之运动分析(2)背景减除类:BackgroundSubtractorKNN的使用
  • 缓存雪崩是什么
  • SparseRCNN 模型,用于目标检测任务
  • 云计算行业应用实训室建设方案
  • es 常用命令(已亲测)
  • Unity编辑器 连接不到SteamVR问题记录