Pytest插件pytest-order指定用例顺序
Pytest插件pytest-order指定用例顺序
安装
pip install pytest-order
注意不是pytest-ordering
说起来这里有个故事
关于pytest-ordering和pytest-order
在写这个文章之前,我用的一直是pytest-ordering
但我在安装pytest-ordering的时候一直看到有pytest-order
今天特意看了下,好家伙
GITHUB上写了这么一句:pytest-ordering is no longer maintained, please use https://pypi.org/project/pytest-order/
pytest-orderis a fork of pytest-ordering that provides additional features like ordering relative to other tests.pytest-orderworks with Python 3.6 - 3.10, with pytest versions >= 5.0.0 for all versions except Python 3.10, and for pytest >= 6.2.4 for Python 3.10.pytest-orderruns on Linux, macOS and Windows.
所以pytest-ordering在当前的pytest及python版本中可能会出现问题,而pytest-order是同步更新的,你可以放心食用
那么问题来了,pytest-order怎么用呢?看官方的示例跟pytest-ordering还是有区别的(如果没有区别,装了2个的话你可能会分不清哪个调用的,当然我们不推荐你用2个)
虽然用起来很简单,但的确蛮细节的,网上你看到的基本都是pytest-ordering的用法,然它在3年前就停止更新了
我把它的git@github.com:pytest-dev/pytest-order.git,下下来,它写了很多的example,嗯~
根据索引排序
其实就一个数字
也可以是与之对应的特定字符,如first等
字符 数字index first 0 second 1 last -1 second_to_last -2 eighth_to_last -8 示例1
import pytest
@pytest.mark.order(index=2)
def test_three():
print('three')
assert 3 == 3
@pytest.mark.order('second')
def test_two():
print('two')
assert 2 == 2
@pytest.mark.order(-1)
def test_last():
print('last')
assert 'last' == 'last'
@pytest.mark.order(0)
def test_one():
print('one')
assert 1 == 1
if __name__ == '__main__':
pytest.main(['-sv', __file__])
test_order_v1.py::test_one one
PASSED
test_order_v1.py::test_two two
PASSED
test_order_v1.py::test_three three
PASSED
test_order_v1.py::test_last last
PASSED
============================== 4 passed in 0.06s ==============================
进程已结束,退出代码为 0
index是从0开始的;切记index=2其实是第三个,first其实是0.所以我们不建议混用
-1是最后一个没有问题,索引体系跟list的类似,还是比较好理解的。建议用数字,学习成本就比较低。
这个装饰器可以用到类上
import pytest
@pytest.mark.order(2)
class TestA:
def test_one(self):
assert 1 == 1
def test_two(self):
assert 1 == 1
@pytest.mark.order(1)
class TestB:
def test_one(self):
assert 1 == 1
def test_two(self):
assert 1 == 1
if __name__ == '__main__':
pytest.main(['-sv', __file__])
test_order_v1.py::TestB::test_one PASSED
test_order_v1.py::TestB::test_two PASSED
test_order_v1.py::TestA::test_one PASSED
test_order_v1.py::TestA::test_two PASSED
排在指定用例后面
直接看示例
import pytest
@pytest.mark.order(after='test_hallo')
def test_hello():
assert 1 == 1
def test_hallo():
assert 1 == 1
if __name__ == '__main__':
pytest.main(['-sv', __file__])
还可以这样写,指定类
@pytest.mark.order(after="TestB::test_c")
@pytest.mark.order(after="Test2")
可以指定文件夹/文件::类::测试用例(即测试函数名),也可以用before
@pytest.mark.order(before="test_module_c/test_submodule.py::test_2")
组合也可以
@pytest.mark.order(index=0, after="test_second")
@pytest.mark.order(after=["test_second", "other_module.py::test_other"])
如果是参数化,那就直接用测试函数名
import pytest
@pytest.mark.order(after=["test_second"])
def test_first():
assert True
@pytest.parametrize(param, [1, 2, 3])
def test_second(param):
assert True
说在最后
关于用例的顺序相关的插件是不少的,比如
pytest-randomly:随机顺序
pytest-reverse:反转(通过一个hook亦可实现)
pytest-random-order :随机顺序
pytest-depends:依赖
pytest-find-dependencies:寻找依赖
写完发现他有个doc,白整了~
https://pytest-order.readthedocs.io/en/latest/
Pytest插件pytest-order指定用例顺序的更多相关文章
- Pytest(7)自定义用例顺序pytest-ordering
前言 测试用例在设计的时候,我们一般要求不要有先后顺序,用例是可以打乱了执行的,这样才能达到测试的效果. 有些同学在写用例的时候,用例写了先后顺序, 有先后顺序后,后面还会有新的问题(如:上个用例返回 ...
- pytest 运行指定用例
pytest运行指定用例 随着软件功能的增加,模块越来越多,也意味用例越来越多,为了节约执行时间,快速得到测试报告与结果,在工作中可以通过运行指定用例,达到快速执行用例 例子目录 spec_sub1_ ...
- pytest系列(二):筛选用例新姿势,mark 一下,你就知道。
pytest系列(一)中给大家介绍了pytest的特性,以及它的编写用例的简单至极. 那么在实际工作当中呢,我们要写的自动化用例会比较多,不会都放在一个py文件里. 如下图所示,我们编写的用例存放在不 ...
- 查询语句中select from where group by having order by的执行顺序
查询语句中select from where group by having order by的执行顺序 1.查询中用到的关键词主要包含六个,并且他们的顺序依次为 select--from--w ...
- tabindex 带有指定 tab 键顺序 或焦点 focus
登录注册时,文本框输入焦点 TAB 键时,自定义下一个焦点的顺序 <input type=" /> <input type=" /> 带有指定 tab 键顺 ...
- Jquery 插件PrintArea 打印指定的网页区域
Jquery 插件PrintArea 打印指定的网页区域 需要下载jquery 和printarea.js插件 PrintArea.Js插件,可以打印整个网页中某个指定的区域. $("打印区 ...
- rownum和order by的执行顺序问题
SQL中rownum和order by的执行顺序的问题 : 在一个SQL中,如果同时使用rownum和order by,会有一个先后顺序的问题. 比如select id1,id2 from t_tab ...
- unittest 运行slenium(四)---通过指定用例的形式运行用例
一: 说明 跟数据驱动唯一的区别为用例数据获取时,及运行方式不同. 其它都基本相同,可参考https://www.cnblogs.com/xiaodingdong/p/11753220.html 二: ...
- pytest之收集用例规则与运行指定用例
前言 上篇文章相信大家已经了解了pytest在cmd下结合各种命令行参数如何运行测试用例,并输出我们想要看到的信息.那么今天会讲解一下pytest是如何收集我们写好的用例?我们又有哪些方式来运行单个用 ...
- pytest启动浏览器,失败用例截图
1.conftest.py # coding:utf- from selenium import webdriver import pytest driver = None @pytest.mark. ...
随机推荐
- 「浙江理工大学ACM入队200题系列」问题 F: 零基础学C/C++39——求方程的解
本题是浙江理工大学ACM入队200题第四套中的F题 我们先来看一下这题的题面. 由于是比较靠前的题目,这里插一句.各位新ACMer朋友们,请一定要养成仔细耐心看题的习惯,尤其是要利用好输入和输出样例. ...
- 还在为数据库事务一致性检测而苦恼?让Elle帮帮你,以TDSQL为例我们测测 | DB·洞见#7
数据库用户通常依赖隔离级别来确保数据一致性,但很多数据库却并未达到其所表明的级别.主要原因是:一方面,数据库开发者对各个级别的理解有细微差异:另一方面,实现层面没有达到理论上的要求. 用户在使用或开发 ...
- Linux配置ipv6脚本
#!/bin/bash REMOTE_IP6="2001:da8:900c:eeee:0:5efe" REMOTE_IP4="" #填你自己学校的路由隧道的ip ...
- PGL图学习之基于GNN模型新冠疫苗任务[系列九]
PGL图学习之基于GNN模型新冠疫苗任务[系列九] 项目链接:https://aistudio.baidu.com/aistudio/projectdetail/5123296?contributio ...
- <五>模板的完全特例化和非完全特例化
模板作为C++泛型编程的基础十分重要,其使得一份代码能用于处理多种数据类型.而有些时候,我们会希望对一些特定的数据类型执行不同的代码,这时就需要使用模板特例化(template specializat ...
- [py]残留python.exe导致anaconda python路径无法识别
刚才重下anaconda真是给我整没脾气了 路径啥的都加好了,cmd输入python还是没有,给我跳应用商店去了- 重启也没用 经过一番搜索,找到解决办法: cmd输入"where pyth ...
- Android-helloword
环境早已配置完毕,就是后来选择API的时候出现了一点问题,唉,追求时尚,选择最新版本的API,结果就悲剧了,跑不起来,也找不到原因.后来换成Android 4.22 17API Level就行了... ...
- 获取Exceptionless的日志
简言: 最近做项目要用到Exceptionless这个分布式日志组件,由于领导说日志需要提供给客户看,废话不多讲,咱直入主题了: 第一步:查看API文档 打开:http://127.0.0.1:500 ...
- PHP 视频源文件加密方案
先说下原理:因为视频是付费的,肯定需要作视频加密处理. 加密可实现的方式:修改视频字节流,只能替换字节流,例如头100-1024字节进行加密,源文件就无法打开了. 下面上代码吧,加解密是 openss ...
- Junti单元测试
Junit单元测试 ## 测试分类 黑盒测试,白盒测试 黑盒测试,不需要写代码,给输入值,看程序是否能够输出期望的值 白盒测试,需要写代码的,关注程序的具体执行流程 Junit使用 是白盒测试 ### ...