12、Pytest之@pytest.mark.自定义标签使用

前言:

Pytest允许用户自定义自己的用例标签,用于将用例进行分组,以便在运行用例的时候筛选你想要运行的用例

@pytest.mark.自定义标签的使用:
  1. 可以标记测试方法、测试类,标记名可以自定义,最好起有意义的名字;
  2. 同一测试类/方法可同时拥有多个标记;
import pytest
 
@pytest.mark.login
class TestLogin:
    """登陆功能测试类"""
 
    @pytest.mark.smoke
    @pytest.mark.success
    def test_login_sucess(self):
        """登陆成功"""
 
        # 实现登陆逻辑
        pass
 
    @pytest.mark.failed
    def test_login_failed(self):
        """登陆失败"""
 
        # 实现登陆逻辑
        pass
 
 
@pytest.mark.logout
class TestLogout:
    """登出功能测试类"""
 
    @pytest.mark.smoke
    @pytest.mark.success
    def test_logout_sucess(self):
        """登出成功"""
 
        # 实现登出功能
        pass
 
    @pytest.mark.failed
    def test_logout_failed(self):
        """登出失败"""
 
        # 实现登出功能
        pass

运行方法:

#语法
pytest -m "自定义标签名" 
或:
pytest.main(['-m 自定义标签名'])
#示例:
 pytest -m "smoke" testmark.py

运行结果:
在这里插入图片描述
从以上运行结果可以看出,只有被选择的标记用例被运行

组合运行用例
  1. 使用 -m 参数运行标记的测试用例;
  2. -m 参数支持 and、or 、not 等表达式;
# 运行登陆功能的用例
pytest.main(['-m login'])
# 运行登出功能的用例
pytest.main(['-m logout'])
# 运行功能成功的用例
pytest.main(['-m success'])
# 运行功能失败的用例
pytest.main(['-m failed'])
# 运行登陆功能但是不运行登陆失败的测试用例
pytest.main(['-m login and not failed'])
# 运行登出功能但是不运行登出成功的测试用例
pytest.main(['-m logout and not success'])
# 运行登陆和登出的用例
pytest.main(['-m login or logout'])
注册、管理 mark 标记:

当使用 -m 参数执行 mark 标记的用例时,pytest 会发出告警信息 “PytestUnknownMarkWarning: Unknown pytest.mark.login - is this a typo? ”,告诉你这是一个 pytest 未知的一个标记!为了消除告警,我们需要在 pytest 的配置文件中注册 mark 标记!
在这里插入图片描述

注册 mark 标记:

  • 首先在项目根目录创建一个文件 pytest.ini ,这个是 pytest 的配置文件; 然后在 pytest.ini 文件的
  • markers 中写入你的 mark 标记, 冒号 “:” 前面是标记名称,后面是 mark 标记的说明,可以是空字符串;
  • 注意:pytest.ini 文件中只能使用纯英文字符,绝对不能使用中文的字符(尤其是冒号和空格)!
[pytest]
markers = 
    login   : 'marks tests as login'
    logout  : 'marks tests as logout'
    success : 'marks tests as success'
    failed  : 'marks tests as failed'

添加之后再看,警告信息就不再有了:
在这里插入图片描述

规范使用 mark 标记:

注册完 mark 标记之后 pytest 便不会再告警,但是有时手残容易写错 mark 名,导致 pytest 找不到用例,一时想不开很难debug,尤其是团队协作时很容易出现类似问题,所以我们需要 “addopts = --strict” 参数来严格规范 mark 标记的使用!

在 pytest.ini 文件中添加参数 “addopts = --strict”;

[pytest]
markers =
    smoke   : 'marks tests as login'
    login   : 'marks tests as login'
    logout  : 'marks tests as logout'
    success : 'marks tests as success'
    failed  : 'marks tests as failed'
 
addopts = --strict

*注意要另起一行,不要在 markers 中添加;
添加该参数后,当使用未注册的 mark 标记时,pytest会直接报错:“ ‘xxx’ not found in markers configuration option ”,不执行测试任务;
注意:pytest.ini 配置文件不支持注释,不支持注释,不支持注释…

  • 8
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值