pytest-ordering 测试用例排序
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 测试用例排序相关推荐
- pytest自动化测试用例管理,常用功能简介
一.使用pytest默认的测试用例的规则以及基础应用 1. 模块名必须用test_开头或者_test结尾(例如:test_login.py) 2. 测试类必须以Test开头,并且不能有init方法(c ...
- Pytest中测试用例参数化时ids中文乱码处理
两种处理办法 1.在pytest.ini中添加: disable_test_id_escaping_and_forfeit_all_rights_to_community_support = True ...
- python测试框架之Pytest(二) : 测试用例的前置setup后置teardown用法
目录 pytest中的前置和后置 类内外执行:方法细化级setup/teardown 类外执行:模块级(setup_module/teardown_module) 类外执行:函数级(setup_fun ...
- 15、Ordering(排序)
文章目录 Note java.util.Arrays java.lang.Comparable java.util.Comparator Code 1.利用 Arrays.sort(Object[\] ...
- pytest(四)--测试用例setup和teardown
https://www.cnblogs.com/canglongdao/p/13395716.html 前言 学过unittest的都知道里面用前置和后置setup和teardown非常好用,在每次用 ...
- Ordering 排序类 - Google Guava
一.Ordering排序类简介 排序器 Ordering 是 Guava流畅风格比较器 Comparator 的实现,它可以用来为构建复杂的比较器,以完成集合排序的功能. 从实现上说,Ordering ...
- Pytest的基本使用
目录 一: Pytest的安装: 二: pytest的简单案例: 三: 断言 1: assert断言: 2:异常断言 测试:抛出的异常和指定的一致 测试: 抛出的异常和测试的异常不一致. 测试:将异常 ...
- Selenium+Pytest自动化测试框架实战
前言 selenium自动化+ pytest测试框架 本章你需要 一定的python基础--至少明白类与对象,封装继承 一定的selenium基础--本篇不讲selenium,不会的可以自己去看sel ...
- 【Selenium+Pytest+allure报告生成自动化测试框架】附带项目源码和项目部署文档
目录 前言 [文章末尾给大家留下了大量的福利] 测试框架简介 首先管理时间 添加配置文件 conf.py config.ini 读取配置文件 记录操作日志 简单理解POM模型 简单学习元素定位 管理页 ...
最新文章
- android jar 包 意见反馈功能,android重点jar包详解.docx
- 今天带你们走进缓存的雪崩、击穿、穿透基本概念
- [Silverlight入门系列]使用MVVM模式(1):MVVM核心概念
- java 注解 数据字典_Spring实现数据字典翻译
- CodeForces - 1465E Poman Numbers(推公式+贪心)
- mysql INFORMATION_SCHEMA COLUMNS 解释
- MATLAB案例学习-基于雷达和摄像头的传感器融合
- scrapy 报错 no module named win32api 的解决方案
- 猫连接路由器路由下连七台电脑,为啥每台电脑手动设ip才有网?
- java IO流学习总结
- pad连接与数据流动
- 类型多样的游戏特效网页特效素材,速来收藏
- 分享一个时间增加的办法
- SAP ABAP——数据类型(一)【数据类型概要及分类】
- 整数有约 | AI智能篆刻:活学活用,让传统文化“潮”起来
- 频率分布直方图和累积频率分布图
- android简单的颜色选择器制作
- 使用Apache PDFBox实现拆分、合并PDF
- 你为什么一定要去美国?给我一个理由
- ubuntu16.04新建磁盘并挂载
热门文章
- python自动抓包手机_python爬虫入门02:教你通过 Fiddler 进行手机抓包-Go语言中文社区...
- 免费版CDH环境搭建(附带免费下载地址)
- 明日之后模拟器玩不了?不存在的,明日之后电脑版同步适配游戏按键
- 中科院考研经历(十三)--倒计时37天心态平复及后续计划
- Wordpress建站:怎么申请SiteGround主机?
- nodejs爬虫实战_简单高效的 nodejs 爬虫模型
- 10.0 SpringMVC源码分析之MVC 模型由来
- Linux配置ipv6环境
- 嵌入式操作系统VxWorks中网络协议存储池原理及实现
- linux下配置gradle环境