pytest框架常用的装饰器有哪些

pytest 框架的常用装饰器可按功能分为几大类,核心用途和用法如下:

一、用例标记与筛选
@pytest.mark.自定义标签:最基础的标记方式,比如@pytest.mark.smoke给冒烟用例打标,执行时通过pytest -m smoke就能只运行该类用例,也可组合标记如@pytest.mark.payment+@pytest.mark.regression,实现多维度筛选。
@pytest.mark.parametrize("参数名", 数据列表):实现参数化测试,批量传入不同数据执行同一用例,比如@pytest.mark.parametrize("a,b,result", [(1,2,3), (4,5,9)]),用例会自动遍历数据列表,无需重复编写测试逻辑。

二、用例执行控制
@pytest.mark.skip(reason="跳过原因"):无条件跳过指定用例,适用于暂未开发完成、环境不兼容的场景,比如@pytest.mark.skip(reason="功能暂未上线,暂不测试")。
@pytest.mark.skipif(条件, reason="跳过原因"):条件性跳过,满足条件时跳过用例,比如@pytest.mark.skipif(sys.platform == "win32", reason="仅在Linux环境执行")。
@pytest.mark.xfail(条件, reason="预期失败原因"):标记 “预期失败” 的用例,运行失败时不影响整体测试结果,若意外成功则会触发提醒,比如@pytest.mark.xfail(reason="已知bug未修复,预期执行失败")。

三、固件(Fixture)相关
@pytest.fixture():定义测试固件,用于封装用例的前置 / 后置操作(如初始化数据库、创建测试数据),固件可通过参数传递给用例,也能设置作用域(如scope="module"表示模块级复用)。
@pytest.mark.usefixtures("固件名1", "固件名2"):给测试类或函数批量绑定固件,无需在参数中显式传入,比如给测试类加@pytest.mark.usefixtures("init_db", "clear_data"),类内所有用例都会自动执行这两个固件。

四、进阶执行控制
@pytest.mark.run(order=数字):需安装pytest-ordering插件,指定用例执行顺序,比如@pytest.mark.run(order=1)让该用例优先执行,解决默认按名称排序的局限。
@pytest.mark.raises(异常类型):断言用例必须抛出指定异常才算通过,比如@pytest.mark.raises(ValueError),若用例执行未抛出该异常则判定失败。#软件测试#  #软件测试面试# #软件测试开发面试#
全部评论
大家平时还会用到哪些装饰器,评论区留言
点赞 回复 分享
发布于 2025-12-14 13:46 江苏

相关推荐

01-11 15:53
已编辑
合肥工业大学 测试工程师
从12月20号到现在每天都在思考:软件测试和游戏测试的真正区别到底在哪里?为什么和我一样经历,专业技术知识还并不如我的人能够那么轻松进入科大讯飞和中兴通讯做测试/测开,而我all in游戏测试却屡屡碰壁?最开始我的思考是有无实习的差别,有实习经验自然更快上手,这是游戏公司所迫切需要的。但是摆在我面前的现实却是:投实习居然比我投正式岗还困难;这不由得引发我进一步考虑:实习背后究竟意味着什么?难道真的存在有些东西只有实践才能知道从任何网站资源都无法获取到吗?欸还真是,事实上,结合多轮面试的学习、同行指导以及自我思考,我终于明确了游戏测试和软件测试具体的区别(绝非牛客网上一堆分享面经的人简单说的游测更关注用户体验而软测更关注软件本身功能那样,说白了用户体验本身也是软测的一部分,这样的回答是无法体现二者真正的区别的),那就是从测试重点到测试思维再到测试方法(工具)二者都有区别,游测和软测是相交关系而非被包含关系,因此用通识软测课程的知识去回答游测问题其实是牛头不对马嘴,而实习最主要最关键的,就是要认知到这个区别,其次才是熟悉工业流程令我比较疑惑的是,具体的工业流程无法成为公开资源被学习可以理解,但这种认知并不是不可公开的秘密,然而查遍网络各种资源都没有对于这种认知的讲解。可能从游测视角来看,入行游测就是奔着玩游戏来的,软测才是顺手的事,所以区别是显而易见的,用不着说;但是如果从软测视角来看,那就出问题了,但是想要成为一名真正合格的游戏测试,你又必须学习软件测试,以软件测试视角导入游戏测试是很自然的事情。我看到过很多做软测投游测栽跟头的例子,因此觉得点明这点认知还是有必要的其实这种认知在自然而然的实际工作中潜移默化就能培养,而没有实际工作经验的人想要得到这种认知,比较困难。但是反过来思考,公司需要的真的是你熟练掌握的实习公司的那套生产流程吗?我想至少对于测试这个行业来讲不是,公司需要的是那套思维,也就是认知,哪怕你没有相关实习经历,公司也会给你机会展现思维,也就是你的简历以及面试官那一个个问题,如果此时你展现出的都是软测思维,那不筛你筛谁?如果你能很好的展示出游测思维,这比一般在一些不知名小公司实习过一段时间(测试用例可能都是Excel写的)还要强,那又有什么理由不要呢?除了这二者概念上的区别外,这二者背后所承载的实体也就是所对应的行业现状也是有区别的,需要软测的公司例如科大讯飞、中兴通讯它们有大把资源培养新人,它们看重的是你的潜质,如果你说你是面试前一个月才开始学测试反而可能比你说你学了好几年测试更让它们喜欢;而需要游测对应的大部分公司目前都急需的是能真正撑起公司测试团队的那种人才,而非公司还要花资源培养你。新游竞发,时不我待,游戏公司哪来的功夫从零开始培养你?因此二者难度上的区别就展现出来了,对于游测而言,公司除了你本身的综合素养以外,还会关注你的入职能直接为公司带来什么,仅仅只是技术能力刚刚合格,而没有能力、思维、或是经验上的突出点,不好意思,当软测合格,当游测很难
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务