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標簽使用效果更佳哦: