当前位置: 首页 > news >正文

pytest——Mark标记

pytest Mark 标记


一、Mark 是什么?

一句话:
给测试用例打“标签/分组”,想跑哪个就跑哪个,灵活控制用例执行。

作用:

  • 分组:冒烟、回归、接口、UI、登录、订单…
  • 跳过:某些用例不想跑
  • 预期失败:知道会错,标记一下
  • 分级:P0、P1、P2 用例

二、最核心:3 步学会使用 Mark

1. 注册标记(必须做,否则报警告)

在项目根目录创建pytest.ini

[pytest] markers = smoke: 冒烟测试 regression: 回归测试 interface: 接口测试 ui: UI测试 p0: 核心用例 p1: 重要用例

2. 给用例打标记

importpytest# 冒烟用例@pytest.mark.smokedeftest_login():assert1==1# 回归用例@pytest.mark.regressiondeftest_logout():assert1==1# 多个标记同时打@pytest.mark.smoke@pytest.mark.p0deftest_pay():assert1==1

3. 命令行选择运行

# 只跑冒烟pytest-msmoke# 跑回归pytest-mregression# 跑 冒烟 AND P0pytest-m"smoke and p0"# 跑 非冒烟pytest-m"not smoke"# 跑 冒烟或回归pytest-m"smoke or regression"

三、pytest内置 4 个超级常用 Mark(必须会)

1. @pytest.mark.skip —— 跳过不跑

@pytest.mark.skip(reason="功能未开发完")deftest_add():assert1+1==2

2. @pytest.mark.skipif —— 满足条件才跳过

@pytest.mark.skipif(1==1,reason="条件成立,跳过")deftest_skip_if():pass

3. @pytest.mark.xfail —— 预期失败

知道会失败,但不想让它报错,标记为 XFAIL

@pytest.mark.xfail(reason="已知bug")deftest_expect_fail():assert1==2

4. @pytest.mark.parametrize —— 数据驱动

@pytest.mark.parametrize("a,b,expect",[(1,2,3),(2,3,5)])deftest_add(a,b,expect):asserta+b==expect

四、企业真实用法

1)按测试类型标记

  • @pytest.mark.interface
  • @pytest.mark.ui
  • @pytest.mark.performance

2)按优先级标记

  • @pytest.mark.p0(核心)
  • @pytest.mark.p1(高频)
  • @pytest.mark.p2(一般)

3)按模块标记

  • @pytest.mark.user
  • @pytest.mark.order
  • @pytest.mark.pay

运行示例

# 只跑核心P0用例pytest-mp0-v# 跑接口+冒烟pytest-m"interface and smoke"-v# 跑除了UI以外所有用例pytest-m"not ui"-v

五、类上面打标记(批量标记)

给整个类的所有用例统一打标记

@pytest.mark.smokeclassTestLogin:deftest_a(self):passdeftest_b(self):passdeftest_c(self):pass

六、常见警告解决(必看)

如果运行出现PytestUnknownMarkWarning
→ 去pytest.ini把标记注册一下即可。


七、最精简总结(记忆口诀)

mark就是打标签, ini文件先注册, 用例加上@标记, -m 参数选择跑, skip跳过xfail败, 数据驱动最常用。
http://www.jsqmd.com/news/624967/

相关文章:

  • NaViL-9B多场景落地:已支撑12家企业完成图文理解AI能力内嵌上线
  • 称重系统、过磅软件、地磅程序C#源码
  • OpenCore Legacy Patcher:让老款Mac重获新生的技术奇迹
  • 实时行情系统设计:从协议选择到高可用架构,再到数据源选型妓
  • Seatunnel实战:构建Mysql到Hive的稳定数据同步管道
  • 2026年丽江有名的婚纱摄影品牌怎么选择,纪实婚礼/草坪婚礼/雪山婚礼/海边婚礼/户外婚礼/婚前影像,婚纱摄影门店多少钱 - 品牌推荐师
  • OPUS编解码器在audio DSP上的移植和应用浅
  • 后端开发GitHub高星开源项目精选:十大主流技术栈微服务框架与云原生平台应用案例汇总
  • 1mt5 外汇市场,研究交易策略,【核心都是数学公式,公式不一定通用】
  • FastbootEnhance终极指南:告别命令行,轻松管理安卓设备
  • 4.13 留痕功能的实现
  • 2025最权威的六大降重复率助手实际效果
  • 2025_NIPS_Can We Infer Confidential Properties of Training Data from LLMs?
  • MogFace-large效果展示:艺术化滤镜、水印覆盖图像中的人脸检测能力
  • 终极指南:北航毕业论文LaTeX模板的完整使用教程,快速搞定格式规范
  • mysql日志管理
  • 碳硅共生:从人机协作到文明共进化——AGI时代智能关系的范式重构与理论建构
  • 手把手教你用AndroidKiller和JADX搞定旧版捕鱼达人内购(附Smali修改实战)
  • Windows Server 2025下载 Windows Server 2022下载 Windows Server 2019下载 Windows Server 2016下载
  • 【AI Agent 从入门到精通】第一章:AI Agent 是什么?一文讲清楚核心概念与架构
  • 高级java每日一道面试题-2025年10月14日-团队协作篇[LangChain4j]-如何设计代码审查标准?
  • C语言函数笔记5:从基础使用到递归与作用域深度解析
  • Transformer模型实战:用Python预测锂电池寿命的保姆级教程(附数据集)
  • 【JavaEE】多线程02—线程安全
  • 从单体LLM API到生产级AI网格:一位CTO带队完成迁移的6周攻坚日志,含全部YAML配置模板
  • Phi-3-Mini-128K实际案例:为芯片设计团队提供Verilog代码规范检查建议
  • 从3月到毕业,大三/研二每个月该干什么?这份校招备战日历建议直接收藏
  • 从理论到实践:忆阻神经网络中的突触与神经元电路设计探析
  • 集成AI 的 Redis 客户端 Rudist发布新版了谔
  • ARMv8架构下Cache一致性:PoU和PoC到底有什么区别?