news 2026/9/13 17:25:15

pytest框架:mark标记功能

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
pytest框架:mark标记功能

🍅点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快

一、mark标记

在实际工作中,我们要写的自动化用例会比较多,也不会都放在一个py文件中,如果有几十个py文件,上百个方法,而我们只想运行当中部分的用例时怎么办?

pytest提供了一个非常好用的mark功能,可以给测试用例打上各种各样的标签,运行用例时可以指定运行某个标签。mark功能作用就是灵活的管理和运行测试用例。

标签既可以打到方法上,也可以打到类上,标记的两种方式:

  • 直接标记类或方法或函数:@pytest.mark.标签名
  • 类属性:pytestmark = [pytest.mark.标签名, pytest.mark.标签名],需要注意的是属性名称是固定的
  • import pytest
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

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

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/5 22:09:53

用热爱浇筑专业:韩宁波的羽球教育初心录

韩宁波的羽球教育初心录:用热爱浇筑专业 一、初心萌芽:从赛场冠军到教育引路人 韩宁波的羽毛球生涯始于对胜利的渴望,却最终升华成对教育的执着。作为省级单打冠军,他在训练中曾遭遇技术瓶颈:正手杀球时速始终无法突…

作者头像 李华
网站建设 2026/9/9 21:07:16

操作自动化测试如何实现用例设计实例?

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快在编写用例之间,笔者再次强调几点编写自动化测试用例的原则:1、一个脚本是一个完整的场景,从用户登陆操作到用户退出系统关闭浏览…

作者头像 李华
网站建设 2026/9/5 22:55:20

如何编写一份优秀的测试报告?

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快什么是测试报告?1、说明:是指把测试的过程和结果写成文档,对发现的问题和缺陷进行分析,为纠正软件的存在的质量问题提…

作者头像 李华
网站建设 2026/9/9 12:26:04

台达AS系列PLC Modbus TCP网口上位机通信的C#监控与数据报表生成

台达AS系列PLC modbus TCP网口上位机通信,项目现场使用设备的C#源代码,监控设备每月每天的生产数据并生成Excel表格。最近在工业现场折腾台达AS系列PLC的Modbus TCP通讯,发现这玩意儿的协议实现和常规设备还真有点不一样。项目需求是抓取设备…

作者头像 李华
网站建设 2026/9/11 13:33:55

Nacos03:Nacos 服务端开启鉴权

文章目录一、修改配置文件二、启动Nacos一、修改配置文件 主要是为了开启鉴权,路径是:/conf/application.properties # 开启鉴权 nacos.core.auth.enabledtrue# 设置服务器令牌和服务器值 nacos.core.auth.server.identity.keynacos2026 nacos.core.auth…

作者头像 李华
网站建设 2026/9/11 22:50:39

CES2026总结报告:AI革命进入新阶段,赋能全场景终端

摘要:2026 年 CES 展会总结报告,核心聚焦 AI 革命进入新阶段并深度融合物理世界,全面覆盖 CES2026 的核心技术与产品动态:AI 芯片领域,英伟达、AMD、英特尔等巨头推动架构与制程迭代,实现推理能效提升与成本…

作者头像 李华