pytest按tag动态挑选测试用例

pytest是个成熟全套的 python 自动化测试工具。单元测试,功能测试、接口自动化测试中都可应用;与 unittest相比,它能支持更多、更全面的功能,同时也具有更多特点和优点,能够参考以前同窗发布的文章。python

动态挑选测试用例一直是测试框架使用的必要功能,好比执行冒烟case进行预测试,针对开发对改动模块进行测试等,根据需求不一样的测试阶段或测试范围内动态调整执行对应的case。在 pytest 里能够按照tag或者按文件动态挑选测试用例,下面简单介绍一下按tag动态挑选用例。微信

须要如下两个步骤:框架

1.首先给测试用例打标签(mark),在class、method 上加上以下格式装饰器,以下面简单示例:函数

@pytest.mark.xxx工具

执行class中的用例
单元测试

执行函数中的用例
测试

执行class中的函数this

2.在运行时,命令行动态指定标签运行:spa

# 同时选中带有这两个标签的全部测试用例运行.net

pytest -m "mark1 and mark2"

# 选中带有mark1或 mark2标签的全部测试用例

pytest -m "mark1 or mark2"

# 选中带有mark1的测试用例,不运行mark2的测试用例

pytest -m "mark1 and not mark2" 

下面用命令行执行-v查看执行详细信息,使用以上规则执行,能够看到没有同时知足important和smoke的用例,important且unrun的用例一条,smoke或unrun的用例两条,important但不是un的用例一条,且执行结果如标签内容

在执行-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文件中只能使用纯英文字符,绝对不能使用中文的字符(尤为是冒号和空格)!

 

注册完 mark 标记以后 pytest 便不会再告警。注意:pytest.ini 配置文件不支持注释

[pytest]

markers =testclass   : 'marks tests as classlevel'

    smoke : 'marks tests as smoke'

    important : 'marks tests as important'

    unrun : 'marks tests as not to run'

 


本文分享自微信公众号 - 搜狗测试(SogouQA)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索