pytest之标记mark

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pytest之标记mark相关的知识,希望对你有一定的参考价值。

参考技术A Pytest标记
1、pytest 查找测试策略
默认情况下,pytest会递归查找当前目录下所有以test开始或结尾的python脚本,并执行文件内所有以test开始或者结束的函数和方法。
2、标记测试函数
第一种,显示指定函数名,通过::标记 :test_no_mark.py::test_func1
第二种,使用模糊匹配,使用-k选项标识: pytest test_no_mark.py -k func1
第三种,使用pytest.mark在函数上进行标记: 使用pytest.mark在函数上进行标记

pytest显示指定函数名,直接输入文件名、类名、方法名进行标记,执行部分测试用例。
核心: pytest.main(['-s','-v','test_mark.py::TestCase'])
例子

返回结果:
test_mark.py::TestCase::test_four four
PASSED
test_mark.py::TestCase::test_five five
PASSED

pytest模糊匹配,参数-k指定类名和方法名进行标记,执行部分测试用例。与::类似
核心: pytest.main(['-s','-v','test_mark.py','-k TestCase'])

返回结果:
test_mark.py::test_two two
PASSED
test_mark.py::TestCase::test_four_two four
PASSED
test_mark.py::TestCase::test_five five
PASSED

pytest中的mark标记功能目的是让我们可以执行部分用例。
场景:在不同的环境中,比如linux和windows,只满足测试符合一部分用例。还不如web项目有很多模块,只需要执行一部分模块的内容。或者分平台,使用webtest和andorid、ios环境进行部分用例测试。
解决:使用mark的方式,@pytest.mark.ios
执行:涉及到2个参数,一个是-s和-m参数。
-s: 输出打印所有信息。
-m: 执行自定义标记的部分用例。
核心: pytest.main(['-q','test_mark.py','-m not ios'])

实例:
执行没有标记ios的用例

执行结果:
4 passed, 1 deselected, 3 warnings in 0.02s

Pytest.main()函数之mark标签使用方法举例

1、创建.ini配置文件,定义标签

[pytest]# 固定的section名
markers= # 固定的option名称
    smoking
    systems

2、创建用例,分别标记,举例如下:

import pytest

@pytest.mark.smoke
def test_a():
    print('我是用例a')

def test_b():
    print('我是用例b')

def test_c():
    print('我是用例c')

3、创建执行所有用例的.py文件,如test_run_all.py

(-v 展示用例详细信息 -m仅执行指定标签的用例)

import pytest

if __name__ == '__main__':
    pytest.main(['-v','-m smoke']) #-v 展示用例详细信息 -m仅执行指定标签的用例

以上是关于pytest之标记mark的主要内容,如果未能解决你的问题,请参考以下文章

pytest 进行自定义mark标记,进行分类管理执行用例

pytest-15-自定义标记mark

pytest-使用自定义标记mark

pytest学习和使用11-Pytest如何使用自定义标记mark?

Pytest之模块之间共享skipif标记

pytest_按标记执行