1.在Pytest中,标签(也称为标记)是⼀种⽤于对测试⽤例进⾏分类或分组的机制2.通过为测试⽤例添加标签,可以在运⾏测试时选择性地执⾏特定标签的测试⽤例,从⽽ ⽅便地控制测试的范围和⽬标3.可以理解为:标签也是用来做过滤的一种方式4.Pytest的标签功能基于装饰器来实现5.可以使⽤ @pytest.mark 装饰器为测试函数或测试类添加标签6.常⻅的⽤法是在测试函数或测试类上⽅添加装饰器,并指定相应的标签一.mark后不同关键字的含义
1.@pytest.mark.skip:标记测试函数为"跳过测试",并提供跳过的原因1.1.这在你想要暂时跳过某些测试的情况下很有用,比如某个功能尚未实现或者有缺陷需要修复2.@pytest.mark.xfail:标记"预期失败的测试"2.1.这表示预期该测试会失败,但想要运行它并收集结果。可以提供失败的原因3.@pytest.mark.parametrize:使用"参数化标记来标记测试函数",并提供参数化的值3.1.这样测试函数将会根据提供的参数值运行多次,每次运行时使用不同的参数4.@pytest.mark.somke:通常用于标记快速运行、覆盖基本功能、且对整体系统影响较小的测试4.1."Smoke测试"旨在快速验证系统的基本功能是否正常,通常在每次代码提交后都会运行,以便快速发现潜在的问题5.@pytest.mark.slow:通常用于标记运行较慢、覆盖范围较广、对整体系统影响较大的测试5.1."Slow测试"可能包括集成测试、端到端测试、性能测试等,需要更长的时间来执行6.自定义标签6.1.@pytest.mark.任意标签内容:但是不能有中文、不能以数字开头;自定义标签mu@pytest.mark.skip:跳过标记为skip的测试用例(不执行)
1.2.源码还是使用上面的"test001.py"代码@pytest.mark.somke:仅运行文件中包含somke标签的测试用例
4.2.test001.pyimportpytest@pytest.mark.smokedeftest_login():# 测试登录功能assertTrue@pytest.mark.regressiondeftest_registration():# 测试注册功能assertTrue@pytest.mark.smokedeftest_add_to_cart():# 测试添加到购物车功能assertTrue@pytest.mark.regressiondeftest_checkout():# 测试结账功能assertTrue@pytest.mark.skip#标记为跳过的用例deftest001():print("001")@pytest.mark.haileydeftest_test_002():print("添加一个标签后然后运行")4.2.1.somke执行pytest-vs-m smoke# 终端命令行的写法pytest.main(["-vs","-m","smoke"])# main文件的写法@pytest.mark.自定义标签:指定自定义标签的用例运行,用例执行
6.2.源码还是使用上面的"test001.py"代码pytest-vs-m hailey# 终端命令行的写法pytest.main(["-vs","-m","hailey"])# main文件的写法6.3.执行后结果报错6.4.配置pytest.ini⽂件:在项⽬根⽬录下的 pytest.ini ⽂件中可以指定全局标记,以应⽤于整个项⽬iniCopy code[pytest][pytest]markers=smoke:Run smoke tests regression:Run regression tests hailey:这是对标签的解释6.5.配置完成后,重新执行一下二.Pytest标签的逻辑筛选
1.逻辑分为四种:是、非、或、和1.1.是:pytest.main(["-vs","-m","hailey"])-->>pytest-m'hailey'-vs1.2.非:pytest.main(["-m","not hailey","-vs"])-->>pytest-m'not hailey'-vs1.3.或:pytest.main(["-vs","-m","hailey or smoke"])终端:-->>pytest-m'hailey or smoke'-vs1.4.和:pytest.main(["-vs","-m","hailey and smoke"])终端:-->>pytest-m'hailey and smoke'-vs2.示例:test001.py2.1."是"2.2."非"2.3."或"2.4."和":执行结果报错2.4.1."和"的逻辑:必须同时满足两个或多个条件,所以给自定义标签的这条用例上再加上smoke标签2.4.2.同一条用例,可以标记多个标签2.4.3.再运行即可