当前位置:网站首页>pytest框架之mark标记功能详细介绍
pytest框架之mark标记功能详细介绍
2022-08-09 18:29:00 【自动化测试七叔】
文章末尾给大家留了大量福利
一、mark标记
在实际工作中,我们要写的自动化用例会比较多,也不会都放在一个py文件中,如果有几十个py文件,上百个方法,而我们只想运行当中部分的用例时怎么办?
pytest提供了一个非常好用的mark功能,可以给测试用例打上各种各样的标签,运行用例时可以指定运行某个标签。mark功能作用就是灵活的管理和运行测试用例。

标签既可以打到方法上,也可以打到类上,标记的两种方式:
- 直接标记类或方法或函数:@pytest.mark.标签名
- 类属性:pytestmark = [pytest.mark.标签名, pytest.mark.标签名],需要注意的是属性名称是固定的
import pytest
@pytest.mark.beta # 可以给类打标签
class TestLogin: # 标记类
@pytest.mark.qc
@pytest.mark.beta # 也可以多个标签
def test_login(self): # 标记方法
pass
@pytest.mark.smoke # 单个标签
def test_register(): # 标记函数
pass
class TestClass:
# 加一个 pytestmark的类属性
pytestmark = [pytest.mark.qc, pytest.mark.beta] # 标签存放在一个列表
pytest.main()二、注册标签名
我们要想运行已经打好标记的函数,还需要对标签名进行注册,告诉pytest有哪些标签,如果不进行注册运行时(pytest的高级版本)可能会报警告让你进行注册。
我们只需要在项目根目录下创建一个pytest.ini文件,注意文件名是不可修改的,否则pytest会找不到。内容格式如下:
# pytest.ini
# 只能修改=右边的值
[pytest]
python_files = demo_*.py # 模块名以demo_开头
python_functions = demo_* # 方法名以demo_开头
python_classes = Demo* # 类名名以Demo开头
# 注册标签
markers =
qc
beta
smoke三、运行指定的标签
通过命令行执行
单个标签:pytest -m "标签名" (-m意思是执行标签mark),不想执行某个标签可以用not来取反,即pytest -m "not 标签名"
多个标签:可以加上判断,pytest -m "qc and beta" 或者 pytest -m "qc or beta" 效果是一样的
注意:标签名一定要加双引号,单引号是会报错的。

四、通过代码执行
这里普及一下,main()方法是可以接收不定长参数的,因此可以把要执行的命令放在一个列表中
if __name__ == '__main__':
pytest.main(['-m qc and beta', '-s']) # 标签名不需要加引号 关于pytest的指令,可以通过控制台执行pytest --help查看,上面举例中-s命令是指打印更加详细的信息,如果程序运行过程当中的print()信息打印不出来,可以加上-s可选参数,它是-- capture=no的缩写。
五、skip跳过标记
在维护测试用例的过程中,可能在一个阶段某些用例已经不需要了,或者在指定条件下是不需要运行的,那么我们就可以通过mark.skip跳过这些函数或者类,两种跳过方式:
- 直接跳过: @pytest.mark.skip(reason = “原因”),这里原因是可选参数
- 条件跳过,即满足某个条件才跳过:@pytest.mark.skipif(a == 1, reason = “原因”)
db_host = 'localhost'
@pytest.mark.skip("和现在的需求不符合") # 不满足当下了,或别人编写的暂时不能删的
def test_yuz(self):
pass
@pytest.mark.skipif(db_host == 'localhost', reason='只测试线上环境,不测试本地环境')
def test_develop_env(self):
pass总结
今天的文章就到这里了哟,需要获得下面福利的小伙伴可以私信我关键字“资料”获取哟。
项目实战
app项目,银行项目,医药项目,电商,金融

大型电商项目

全套软件测试自动化测试教学视频

300G教程资料下载【视频教程+PPT+项目源码】

全套软件测试自动化测试大厂面经

python自动化测试++全套模板+性能测试

边栏推荐
- [免费专栏] Android安全之Root检测和绕过(浅析)
- Start cleaning up the long-term divers in the electronic chart development group again
- 你应该试着独自做个游戏
- 字节二面:可重复读隔离级别下,这个场景会发生什么?
- 论文精读:VIT - AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE
- 这年头还不来尝试线稿图视频??
- C程序设计-第四版
- CreateCompatibleDC用法
- PHP 变量注释/**@var*/
- Flume (六) --------- Flume 数据流监控
猜你喜欢

Codesys结构变量编程应用(STRUCT类型)

Iptables防火墙常见的典型应用场景

双屏协作更高效,华硕灵耀X 双屏Pro 2022创作体验再升级

What is the Treasure Project (TPC), a dark horse with wings in 2022!
![[免费专栏] Android安全之Android工程模式](/img/9e/373a513dd3cd4681ff969432c9dfd5.png)
[免费专栏] Android安全之Android工程模式

ThreadLocal 夺命 11 连问,万字长文深度解析
![[免费专栏] Android安全之Xposed插件开发【从零手把手带】教程](/img/7b/a036ac664c7e27ed7d87e7ee18c05d.png)
[免费专栏] Android安全之Xposed插件开发【从零手把手带】教程

鹅厂机器狗花式穿越10m梅花桩:前空翻、单桩跳、起身作揖...全程不打一个趔趄...

Linux上给PHP安装redis扩展

国内市场上的 BI 软件到底有啥区别?
随机推荐
web正则表达式中^和$的含义是什么
[免费专栏] Android安全之和平精英(FZ)APK逆向分析
2022了你还不会『低代码』?数据科学也能玩转Low-Code啦!
[免费专栏] Android安全之APK动态方式逆向应用【三种Smali注入方法】
YOLO v3源码详解
开源一夏 | 基于若依架构的列表详情展示
OpenHarmony如何查询设备类型
[免费专栏] Android安全之安卓APK浅析
Iptables防火墙常见的典型应用场景
最新BEV感知基线 | 你确定需要激光雷达?(卡内基梅隆大学)
[免费专栏] Android安全之ZIP文件目录遍历漏洞
国产抗新冠口服药每瓶不超300元/ 我国IPv6网络全面建成/ 谷歌入局折叠屏手机...今日更多新鲜事在此...
anno arm移植Qt环境后,编译正常,程序无法正常启动问题的记录
如何抑制告警风暴?
史上最全架构师知识图谱(纯干货)
2022 RoboCom 世界机器人开发者大赛-本科组(省赛)-RC-u5 树与二分图
[免费专栏] Android安全之数据存储与数据安全【大集合】
国内市场上的 BI 软件到底有啥区别?
What is the Treasure Project (TPC), a dark horse with wings in 2022!
MFC tutorial