1.首先,我们要执行用例,我们要先了解pytest中的Marker(标签) 机制
对于Pytest,我们可以在每一个模块,每一个类,每一个方法和用例前都加上marker,那样我们在pytest运行的时候就可以只运行带有该mark标签的模块、类、用例。
这样的话可以方便我们选择执行自动化时,是选择执行全部用例、某个模块用例、某个流程用例、某个单独用例,总之就是某个单独的标签下所有用例。
让我们根据测试方向、时间、选择调试来执行对应的marker。
2.打marker标签的方法。
1). 注册标签。
在项目目录的下级新建一个配置文件: pytest.ini
如图中一样,很简单。前面是你标签名称,后面是对标签的注释(注释可以不写)
如图中我给项目分了smoke(冒烟)、demo(类)、login(登录)、test(调试),之后如果有需要我会根据情况继续增加
2). 打marker标签。
打标签方法有2种
第一种:
@pytest.mark.标签名
第二种:
pytestmark = pytest.mark.标签名
第一种打标签的位置可以在类名前,方法前
第二种打标签的位置可以在类中、方法中
一个类或方法可以打多个不同的标签,标签之间不会冲突。
上图:
如图,执行pytest就可以根据标签名来执行你想执行的用例
也可以在Terminal(IDE中)、或cmd.exe中用命令来执行 pytest -m 标签名 来运行
当然 -m 只代表执行的标签名,pytest中 - 后面可以接很多命令,需要大家根据需要自己添加,
而后面 --html,--alluredir 则为运行后生成对应的HTML报告或allure报告,用于Jenkins集成。
3).打完标签后确实方便了许多,但也还有些繁琐。特别是调试的时候,我是在需要调试的用例方法名前面打上test标签,
然后执行 pytest -m test ,这样确实方便用于调试。可是有时候记性不好,调试完后忘记取消该标签,
下一次其他用例调试前打上test标签,会把之前未取消标签的用例一并运行,有点糟心。
所以又搜寻了一下其他方法记录一下:
1.选择运行特定的某个类
pytest -v test_pytest_markers.py::TestClass
2.选择运行特定的某个测试用例
pytest -v test_pytest_markers.py::TestClass::test_method
3.多种组合
pytest -v test_pytest_markers.py::TestClass test_pytest_markers.py::test_send_http
4.用-k进行关键字匹配来运行测试用例名字子串
pytest -v -k http test_pytest_markers.py
配合-m标签使用效果更佳哦: