pytest框架—mark标记功能

张开发
2026/4/14 23:55:19 15 分钟阅读

分享文章

pytest框架—mark标记功能
点击文末小卡片免费获取软件测试全套资料资料在手涨薪更快一、mark标记在实际工作中我们要写的自动化用例会比较多也不会都放在一个py文件中如果有几十个py文件上百个方法而我们只想运行当中部分的用例时怎么办pytest提供了一个非常好用的mark功能可以给测试用例打上各种各样的标签运行用例时可以指定运行某个标签。mark功能作用就是灵活的 管理和运行测试用例。标签既可以打到方法上也可以打到类上标记的两种方式直接标记类或方法或函数pytest.mark.标签名类属性pytestmark [pytest.mark.标签名, pytest.mark.标签名]需要注意的是属性名称是固定的import pytestimport 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可选参数它是-- captureno的缩写。五、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最后下方这份完整的软件测试 视频教程已经整理上传完成需要的朋友们可以自行领取【保证100%免费】​​​软件测试面试文档我们学习必然是为了找到高薪的工作下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料并且有字节大佬给出了权威的解答刷完这一套面试资料相信大家都能找到满意的工作。

更多文章