pytest 默认按照 py 文件内的用例编写顺序来执行。

⚠️ unittest 会自动按照 ascii 码排序:小写英文—>大写英文—>0-9数字

通过插件可以改变测试用例的执行顺序,安装方法如下:

$ pip install pytest-ordering

用法:@pytest.mark.run(order=1)

具体的用法这里不多赘述,网上很多教程。

这里只是记录下,实际应用过程中由于没有理解排序机制导致出现的问题。

⚠️

注意:通过这种方法设置的用例排序是全局的‼️

# a.py
@pytest.mark.run(order=1)
def test_01():pass
@pytest.mark.run(order=2)
def test_02():pass# b.py
@pytest.mark.run(order=1)
def test_03():pass
@pytest.mark.run(order=2)
def test_04():pass

上面的测试用例执行顺序是:

> test_01()
> test_03()
> test_02()
> test_04()

先执行完全部 order=1 的用例,然后才会执行 order=2 的用例。

我理解的是按 order 排序执行完 a.py 的全部用例后再去按顺序执行 b.py 的用例,这是错误的理解。


我遇到的问题。

  • a.py 和 b.py 这两个用例文件都通过 setup_class() 初始化了一个随机值
  • 预期 a.py 随机值在 test_01() 和 test_02() 是通用的
  • 预期 b.py 随机值在 test_03() 和 test_04() 是通用的

在我执行全部 case 的时候,a.py 执行完 test_01() 后,在执行 test_02() 时,随机值又被初始化了一次,这与 setup_class 类初始化一次的逻辑不太符合呀,百思不得其解。

一步一步的排查,才发现通过 order 指定了顺序导致。

  • a.py --> setup_class() --> test_01()
  • b.py --> setup_class() --> test_03()
  • a.py --> setup_class() --> test_02() # 这里又初始化了,导致随机值变了
  • b.py --> setup_class() --> test_04() # 这里又初始化了,导致随机值变了

设置 order 时:

取消 order 后:

pytest-ordering 测试用例排序相关推荐

  1. pytest自动化测试用例管理,常用功能简介

    一.使用pytest默认的测试用例的规则以及基础应用 1. 模块名必须用test_开头或者_test结尾(例如:test_login.py) 2. 测试类必须以Test开头,并且不能有init方法(c ...

  2. Pytest中测试用例参数化时ids中文乱码处理

    两种处理办法 1.在pytest.ini中添加: disable_test_id_escaping_and_forfeit_all_rights_to_community_support = True ...

  3. python测试框架之Pytest(二) : 测试用例的前置setup后置teardown用法

    目录 pytest中的前置和后置 类内外执行:方法细化级setup/teardown 类外执行:模块级(setup_module/teardown_module) 类外执行:函数级(setup_fun ...

  4. 15、Ordering(排序)

    文章目录 Note java.util.Arrays java.lang.Comparable java.util.Comparator Code 1.利用 Arrays.sort(Object[\] ...

  5. pytest(四)--测试用例setup和teardown

    https://www.cnblogs.com/canglongdao/p/13395716.html 前言 学过unittest的都知道里面用前置和后置setup和teardown非常好用,在每次用 ...

  6. Ordering 排序类 - Google Guava

    一.Ordering排序类简介 排序器 Ordering 是 Guava流畅风格比较器 Comparator 的实现,它可以用来为构建复杂的比较器,以完成集合排序的功能. 从实现上说,Ordering ...

  7. Pytest的基本使用

    目录 一: Pytest的安装: 二: pytest的简单案例: 三: 断言 1: assert断言: 2:异常断言 测试:抛出的异常和指定的一致 测试: 抛出的异常和测试的异常不一致. 测试:将异常 ...

  8. Selenium+Pytest自动化测试框架实战

    前言 selenium自动化+ pytest测试框架 本章你需要 一定的python基础--至少明白类与对象,封装继承 一定的selenium基础--本篇不讲selenium,不会的可以自己去看sel ...

  9. 【Selenium+Pytest+allure报告生成自动化测试框架】附带项目源码和项目部署文档

    目录 前言 [文章末尾给大家留下了大量的福利] 测试框架简介 首先管理时间 添加配置文件 conf.py config.ini 读取配置文件 记录操作日志 简单理解POM模型 简单学习元素定位 管理页 ...

最新文章

  1. android jar 包 意见反馈功能,android重点jar包详解.docx
  2. 今天带你们走进缓存的雪崩、击穿、穿透基本概念
  3. [Silverlight入门系列]使用MVVM模式(1):MVVM核心概念
  4. java 注解 数据字典_Spring实现数据字典翻译
  5. CodeForces - 1465E Poman Numbers(推公式+贪心)
  6. mysql INFORMATION_SCHEMA COLUMNS 解释
  7. MATLAB案例学习-基于雷达和摄像头的传感器融合
  8. scrapy 报错 no module named win32api 的解决方案
  9. 猫连接路由器路由下连七台电脑,为啥每台电脑手动设ip才有网?
  10. java IO流学习总结
  11. pad连接与数据流动
  12. 类型多样的游戏特效网页特效素材,速来收藏
  13. 分享一个时间增加的办法
  14. SAP ABAP——数据类型(一)【数据类型概要及分类】
  15. 整数有约 | AI智能篆刻:活学活用,让传统文化“潮”起来
  16. 频率分布直方图和累积频率分布图
  17. android简单的颜色选择器制作
  18. 使用Apache PDFBox实现拆分、合并PDF
  19. 你为什么一定要去美国?给我一个理由
  20. ubuntu16.04新建磁盘并挂载

热门文章

  1. python自动抓包手机_python爬虫入门02:教你通过 Fiddler 进行手机抓包-Go语言中文社区...
  2. 免费版CDH环境搭建(附带免费下载地址)
  3. 明日之后模拟器玩不了?不存在的,明日之后电脑版同步适配游戏按键
  4. 中科院考研经历(十三)--倒计时37天心态平复及后续计划
  5. Wordpress建站:怎么申请SiteGround主机?
  6. nodejs爬虫实战_简单高效的 nodejs 爬虫模型
  7. 10.0 SpringMVC源码分析之MVC 模型由来
  8. Linux配置ipv6环境
  9. 嵌入式操作系统VxWorks中网络协议存储池原理及实现
  10. linux下配置gradle环境