一涤垫、簡介
1.pytest是一個非常成熟的Python的單元框架篡诽,比unittest更靈活;
2.pytest可以和selenium路星、requests罕模、appium結(jié)合實現(xiàn)web自動化色迂、接口自動化、app自動化手销;
3.pytest可以實現(xiàn)測試用例的跳過以及reruns失敗用例重試;
4.pytest可以和allure生成好看的測試報告图张;
5.pytest可以和Jenkins配置持續(xù)集成锋拖;
6.pytest有很多強大的插件,足以支撐我們的常用操作祸轮,如下:
pytest-xdist 分布式執(zhí)行case兽埃,多CPU分發(fā)
pytest-ordering 改變case的執(zhí)行順序
pytest-rerunfailures 失敗case重跑
pytest-html 生成html格式的測試報告
allure-pytest 用于生成好看的測試報告
注意:以上插件都需要手動安裝,可以放到requirements.txt中适袜,通過pip install -r requirements.txt 統(tǒng)一安裝柄错,該方式安裝的只針對當(dāng)前項目
二、pytest默認(rèn)規(guī)則
1.模塊名必須以test_開頭或者_(dá)test結(jié)尾
2.測試類必須以Test開頭苦酱,并且不能有init方法
3.測試方法必須以test開頭
注意:這些都是默認(rèn)規(guī)則售貌,如果不想用默認(rèn)規(guī)則,需要重新定義配置參數(shù)對應(yīng)規(guī)則即可疫萤;
三颂跨、pytest case 運行方式
~參數(shù)詳解
-s 表示輸出調(diào)試信息,包括print打印的信息
-v顯示更詳細(xì)的信息
-vs兩個參數(shù)一起使用
-n支持多線程或者分布式運行測試用例
-reruns num 失敗case重跑
-x表示只要有一個case報錯就停止運行
-maxfail=2 最大失敗數(shù)扯饶,出現(xiàn)兩個失敗用例就停止
-k根據(jù)case的部分字符串選中case
-html 生成html格式的測試報告
1.主函數(shù)模式
1.1運行所有:pytest.main()
1.2指定模塊:pytest.main(['-vs','test_login.py'])
1.3指定目錄:pytest.main(['-vs','./interface_testcase'])
1.4通過nodeid指定用例運行:
pytest.main(['-vs','./interface_testcase/test_login.py::test_01_func'])
2.命令行模式
2.1運行所有? pytest
2.2指定模塊 pytest -vs test_login.py
2.3指定目錄 pytest -vs ./interface_testcase
2.4指定方法pytest -vs? ./interface_testcase/test_login.py::test_01_func
3.通過讀取pytest.ini全局配置文件運行(最常用的方式)
pytest.ini這個文件是pytest單元測試框架的核心配置文件(我們說的二的默認(rèn)規(guī)則注意部分的修改參數(shù)就是在這個文件里修改)
3.1路徑:一般放在項目的根目錄
3.2編碼格式:必須是ANSI恒削,可以使用編輯器(sublime text)修改
3.3作用:改變pytest默認(rèn)行為池颈,按照文件內(nèi)容執(zhí)行
3.4運行規(guī)則:不管是主函數(shù)還是命令行模式運行,都會讀取這個配置文件钓丰,常見的ini內(nèi)容如下:
[pytest]
addopts=-vs? ? ? ? ? ? ? ? ? #命令行參數(shù)躯砰,用空格分隔
testpaths=./testcase? ? ? #case路徑
python_files=test_*.py? ? #模塊名規(guī)則
python_classes=Test*? ? #類名的規(guī)則
python_functions=test? ? # 方法名規(guī)則
markers=
? ? ? ? ? ? ? ? smoke:冒煙用例
? ? ? ? ? ? ? ? interface:接口用例
? ? ? ? ? ? ? ? web:網(wǎng)頁用例
? ? ? ? ? ? ? order:訂單管理模塊
? ? ? ? ? ? ? ? user:用戶模塊
四、pytest執(zhí)行case的順序
默認(rèn)是從上到下
改變默認(rèn)執(zhí)行順序:使用mark標(biāo)記
@pytest.mark.run(order=3)
五携丁、分組執(zhí)行(冒煙琢歇、功能模塊、類型(接口&web))
smoke:冒煙用例则北,分布在各個模塊里
先在用例里標(biāo)記矿微,然后-m參數(shù)運行即可
@pytest.mark.smoke
pytest -m "smoke"
pytest -m "smoke or user or order"
六、跳過case
1.無條件跳過
@pytest.mark.skip(reason="還沒寫完")
2.有條件跳過
@pytest.mark.skipif(1==1,reason="符合條件所以跳過")