pytest Mark 标记一、Mark 是什么一句话给测试用例打“标签/分组”想跑哪个就跑哪个灵活控制用例执行。作用分组冒烟、回归、接口、UI、登录、订单…跳过某些用例不想跑预期失败知道会错标记一下分级P0、P1、P2 用例二、最核心3 步学会使用 Mark1. 注册标记必须做否则报警告在项目根目录创建pytest.ini[pytest] markers smoke: 冒烟测试 regression: 回归测试 interface: 接口测试 ui: UI测试 p0: 核心用例 p1: 重要用例2. 给用例打标记importpytest# 冒烟用例pytest.mark.smokedeftest_login():assert11# 回归用例pytest.mark.regressiondeftest_logout():assert11# 多个标记同时打pytest.mark.smokepytest.mark.p0deftest_pay():assert113. 命令行选择运行# 只跑冒烟pytest-msmoke# 跑回归pytest-mregression# 跑 冒烟 AND P0pytest-msmoke and p0# 跑 非冒烟pytest-mnot smoke# 跑 冒烟或回归pytest-msmoke or regression三、pytest内置 4 个超级常用 Mark必须会1. pytest.mark.skip —— 跳过不跑pytest.mark.skip(reason功能未开发完)deftest_add():assert1122. pytest.mark.skipif —— 满足条件才跳过pytest.mark.skipif(11,reason条件成立跳过)deftest_skip_if():pass3. pytest.mark.xfail —— 预期失败知道会失败但不想让它报错标记为 XFAILpytest.mark.xfail(reason已知bug)deftest_expect_fail():assert124. pytest.mark.parametrize —— 数据驱动pytest.mark.parametrize(a,b,expect,[(1,2,3),(2,3,5)])deftest_add(a,b,expect):assertabexpect四、企业真实用法1按测试类型标记pytest.mark.interfacepytest.mark.uipytest.mark.performance2按优先级标记pytest.mark.p0核心pytest.mark.p1高频pytest.mark.p2一般3按模块标记pytest.mark.userpytest.mark.orderpytest.mark.pay运行示例# 只跑核心P0用例pytest-mp0-v# 跑接口冒烟pytest-minterface and smoke-v# 跑除了UI以外所有用例pytest-mnot ui-v五、类上面打标记批量标记给整个类的所有用例统一打标记pytest.mark.smokeclassTestLogin:deftest_a(self):passdeftest_b(self):passdeftest_c(self):pass六、常见警告解决必看如果运行出现PytestUnknownMarkWarning→ 去pytest.ini把标记注册一下即可。七、最精简总结记忆口诀mark就是打标签 ini文件先注册 用例加上标记 -m 参数选择跑 skip跳过xfail败 数据驱动最常用。