一、前言
mark主要用来标记用例,通过不同的标记实现不同的运行策略。一个大项目自动化用例时,可以划分多个模块,也可以使用标记功能,标明哪些是模块1用例,哪些是模块2的,运行代码时候指定mark名称运行就可以。
二、学习目标
1.@pytest.mark.自定义标签
2.组合运行用例
3.注册、管理 mark 标记
三、知识点
1.【@pytest.mark.自定义标签
】
(一)可以标记测试方法、测试类,标记名可以自定义,最好起有意义的名字;
(二)同一测试类/方法可同时拥有多个标记;
-
语法:
@pytest.mark.标签名
-
代码示例:
import pytest @pytest.mark.login class TestLogin: """登陆功能测试类""" @pytest.mark.smoke @pytest.mark.success def test_login_sucess(self): """登陆成功""" print("---用例1:登录成功---") @pytest.mark.failed def test_login_failed(self): """登陆失败""" print("---用例2:登陆失败---") @pytest.mark.logout class TestLogout: """退出功能测试类""" @pytest.mark.smoke @pytest.mark.success def test_logout_sucess(self): """退出成功""" print("---用例3:退出成功---") @pytest.mark.failed def test_logout_failed(self): """退出失败""" print("---用例4:退出失败---")
-
运行效果:
运行语法:
pytest -m "自定义标签名"
或pytest.main(['-m 自定义标签名'])
可以在终端运行或py文件的主函数运行。pytest -m "smoke" test_demo.py
test_demo.py:4 C:\Users\Admin\Desktop\教学资料\自动化教学源码+PPT\理论课代码\pytest_demo\test_demo.py:4: PytestUnknownMarkWarning: Unknown pytest.mark.login - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/late st/mark.html @pytest.mark.login ... ========================== 2 passed, 2 deselected, 8 warnings in 0.02s =======================
2.【注册、管理 mark 标记】
由上面的运行结果可以看出,用例只运行了标签为"smoke"的用例,但是运行会出现告警信息。那么如何解决这些告警呢?首先要明白,使用mark标记时,是需要注册的,如果不注册就会出现告警。
-
方式一:在conftest.py文件当中,通过hock注册:
#conftest.py文件 def pytest_configure(config): config.addinivalue_line("markers", "smoke:标记只运行冒烟用例") config.addinivalue_line("markers", "login:标记只运行登录用例") config.addinivalue_line("markers", "logout:标记只运行退出用例") config.addinivalue_line("markers", "success:标记只运行成功用例") config.addinivalue_line("markers", "failed:标记只运行失败用例")
-
方式二:创建pytest.ini文件,在文件中注册:
[pytest] markers = smoke:smoke case login:login case logout:logout case success:success case failed:failed case addopts = --strict
“addopts = --strict” 参数来严格规范 mark 标记的使用,当使用未注册的 mark 标记时,pytest会直接报错。
pytest.ini文件文件的更多用法,我们后面专门拿出一节课来介绍。
3.【组合运行用例】
其实当我们运行的时候,也可以指定多个标签。
- 使用 -m 参数运行标记的测试用例;
- -m 参数支持 and、or 、not 等表达式;
终端运行:
# 运行登陆功能但是不运行登陆失败的测试用例
pytest -m "login and not failed" test_demo.py
# 运行登出功能但是不运行登出成功的测试用例
pytest -m "logout and not success" test_demo.py
# 运行登陆和登出的用例
pytest -m "login or logout" test_demo.py
标签:10,标记,mark,用例,pytest,login,运行
From: https://www.cnblogs.com/ckxingchen/p/17057179.html