当写的用例比较多的的时候,我们需要对测试用例进行模块划分,比如,抽出一部分作为冒烟用例。部分用例只能在安卓系统上运行,部分用例只能在IOS上运行等等
这时候就要用到 @pytest.mark
的功能,给每条用例打上标签,方便运行
使用案例
import pytest
import sys
class Test_Mark():
def test_mark_01(self):
assert(1 == 1)
@pytest.mark.IOS
@pytest.mark.smokeTest
def test_mark_02(self):
print("run in IOS")
@pytest.mark.Android
def test_mark_03(self):
print("run in Android")
@pytest.mark.IOS
def test_mark_04(self):
print("run in IOS")
if __name__ == '__main__':
#pytest.main(['MyPytest.py', '-m', 'smokeTest'])
#pytest.main(['MyPytest.py', '-m', 'IOS'])
pytest.main(['MyPytest.py', '-m', 'smokeTest and IOS'])
运行结果: collected 4 items / 3 deselected / 1 selected
collected 4 items / 3 deselected / 1 selected
MyPytest.py . [100%]
============================== warnings summary ===============================
MyPytest.py:9
MyPytest.py:9: PytestUnknownMarkWarning: Unknown pytest.mark.IOS - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/mark.html
@pytest.mark.IOS
MyPytest.py:10
MyPytest.py:10: PytestUnknownMarkWarning: Unknown pytest.mark.smokeTest - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/mark.html
@pytest.mark.smokeTest
MyPytest.py:14
MyPytest.py:14: PytestUnknownMarkWarning: Unknown pytest.mark.Android - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/mark.html
@pytest.mark.Android
MyPytest.py:18
MyPytest.py:18: PytestUnknownMarkWarning: Unknown pytest.mark.Android - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/mark.html
@pytest.mark.Android
-- Docs: https://docs.pytest.org/en/stable/warnings.html
================= 1 passed, 3 deselected, 4 warnings in 0.07s =================
***Repl Closed**
解决PytestUnknownMarkWarning
的问题
- 创建一个 pytest.ini 文件(后续详解)
- 加上自定义 mark,如下
注意:pytest.ini 需要和运行的测试用例同一个目录,或在根目录下作用于全局
运行参数说明
- pytest -m "key1 or key2" #运行有key1标识或key2标识用例
- pytest -m "key1 and key2" #运行有key1和key2标识的用例
- pytest -m "not key1" #运行除了key1之外的标识的用例
- pytest -m "key1 and not key2" #运行有key1和没有key2标识的用例