Python自動(dòng)化測(cè)試框架pytest的詳解安裝與運(yùn)行
1. pytest的介紹
pytest是一個(gè)非常成熟的全功能的python測(cè)試工具,它主要有以下特征:
簡(jiǎn)單靈活,容易上手;
支持簡(jiǎn)單的單元測(cè)試和復(fù)雜的功能測(cè)試
顯示詳細(xì)的斷言失敗信息
能自動(dòng)識(shí)別測(cè)試模塊和測(cè)試功能
有測(cè)試會(huì)話、測(cè)試模塊、測(cè)試類(lèi)、測(cè)試函數(shù)級(jí)別的fixture
可用于selenium/Appium等自動(dòng)化測(cè)試和接口自動(dòng)化測(cè)試(pytest+requests);
擁有豐富的第三方插件,還可自定義擴(kuò)展;
可與持續(xù)集成工具進(jìn)行很好的集成,如:Jenkins。
…
2. pytest的安裝
1. 使用以下命令進(jìn)行安裝
pip install -U pytest
參數(shù)說(shuō)明:
-U: 將指定的軟件包升級(jí)至當(dāng)前最新的可用版本
其他說(shuō)明:
官網(wǎng)安裝說(shuō)明有加上-U參數(shù),不加上-U參數(shù)亦可
2. 檢查是否成功安裝正確版本
$ pytest --version pytest 6.2.4
3. pytest識(shí)別測(cè)試的條件
1.若無(wú)指定參數(shù),pytest會(huì)從testpath(如果配置)或當(dāng)前目錄下遞歸查找與 norecursedirs不匹配的目錄。
2.查找目錄中所有符合test_*.py
和*_test.py
的文件
3.從匹配到的測(cè)試文件中,搜集滿足以下條件的測(cè)試用例:
- 在類(lèi)之外的所有
test_*
方法 Test*
類(lèi)中包含的所有test_*
方法(Test*
類(lèi)中不能含有__init__()
方法)
4. pytest的運(yùn)行
pytest的運(yùn)行分為以下方式:
1. Pycharm中進(jìn)行調(diào)用
2. Python代碼中調(diào)用
3. 使用命令行進(jìn)行調(diào)用
4.1 Pycharm中調(diào)用
Pycharm中默認(rèn)的test runner是Unittest,無(wú)法識(shí)別使用pytest編寫(xiě)的測(cè)試文件和測(cè)試用例
進(jìn)入Preferences-->Tools-->Python Integrted Tools,
修改Testing下的Default test runner,改成pytest后,
則可以直接使用Pycharm中的Run按鈕無(wú)參數(shù)的調(diào)用pytest。
4.2 Python代碼中調(diào)用
在代碼中添加入口函數(shù)—pytest.main(),即可在Python代碼中調(diào)用pytest。
pytest.main()
的參數(shù):
1. args
:命令行指令列表集
示例代碼sample1:
import pytest class TestDemo: def test_demo1(self): print("test_demo1") def test_demo2(self): print("test_demo2") if __name__=='__main__': pytest.main(['test_sample.py::TestDemo::test_demo1','-v'])
pytest.main(['test_sample.py::test_demo1','-v'])的參數(shù)說(shuō)明:
''test_sample.py::TestDemo::test_demo1'':表示運(yùn)行test_sample.py中的TestDemo類(lèi)里面名為test_demo1的測(cè)試方式
-v:表示打印詳細(xì)運(yùn)行日志信息
運(yùn)行結(jié)果:
2. plugins
:在初始化過(guò)程中可自動(dòng)注冊(cè)的插件對(duì)象列表
示例代碼sample2:
import pytest import sys class TestDemo: def test_demo1(self): print("test_demo1") def test_demo2(self): print("test_demo2") class MyPlugin: def pytest_sessionfinish(self): print("*** test run reporting finishing") if __name__ == '__main__': sys.exit(pytest.main(['-v','test_sample.py::TestDemo::test_demo1'], plugins=[MyPlugin()]))
pytest.main(['-v','test_sample.py::TestDemo::test_demo1'], plugins=[MyPlugin()])參數(shù)說(shuō)明:
plugins=[MyPlugin()])):傳入自定義的MyPlugin()函數(shù)
運(yùn)行結(jié)果:
4.3 使用命令行調(diào)用
1. 使用python
調(diào)用
當(dāng)代碼中我們添加入口函數(shù)后,可以使用python來(lái)調(diào)用pytest。
以sample2的代碼為例,在終端輸入一下命令:
python test_sample.py
運(yùn)行結(jié)果:
2. 使用pytest
調(diào)用
常用參數(shù)列表
以下列舉了一些常用的pytest的執(zhí)行參數(shù),其他參數(shù)可使用pytest --help
查看。
參數(shù) | 說(shuō)明 |
---|---|
pytest 目錄路徑 | 運(yùn)行指定目錄下可收集到的測(cè)試,為空則默認(rèn)執(zhí)行當(dāng)前目錄下收集到的測(cè)試 |
pytest 文件名.py | 執(zhí)行單獨(dú)一個(gè)pytest模塊 |
pytest 文件名.py::類(lèi)名 | 運(yùn)行某個(gè)模塊中的某個(gè)類(lèi) |
pytest 文件名.py::類(lèi)名::方法名 | 運(yùn)行某個(gè)模塊中的某個(gè)類(lèi)的某個(gè)方法 |
pytest -v | 打印詳細(xì)運(yùn)行日志信息 |
pytest -v -s 文件名.py | 帶控制臺(tái)輸出結(jié)果,也輸出運(yùn)行詳細(xì)日志信息 |
pytest -x 文件名.py | 一旦運(yùn)行到報(bào)錯(cuò),就停止運(yùn)行 |
pytest -k "類(lèi)名 and not 方法名" | 執(zhí)行某個(gè)關(guān)鍵字的用例 |
pytest -m [標(biāo)記名] | @pytest.mark.[標(biāo)記名]將運(yùn)行這個(gè)標(biāo)記的測(cè)試用例 |
pytest –maxfail=[num] | 當(dāng)運(yùn)行錯(cuò)誤到達(dá)num時(shí)候就停止運(yùn)行 |
pytest –colection-only | 只收集測(cè)試用例 |
pytest –junitxml=./result.xml | 生成執(zhí)行結(jié)果文件 |
pytest –setup-show | 回溯fixture的執(zhí)行過(guò)程 |
參數(shù)演示示例:
demo目錄如下
1.pytest目錄路徑:運(yùn)行指定目錄下可收集到的測(cè)試
2.pytest文件名.py:執(zhí)行單獨(dú)一個(gè)pytest模塊
3.pytest 文件名.py::類(lèi)名:運(yùn)行某個(gè)模塊中的某個(gè)類(lèi)
4.pytest 文件名.py::類(lèi)名::方法名:運(yùn)行某個(gè)模塊中的某個(gè)類(lèi)的某個(gè)方法
5.pytest -v: 打印詳細(xì)運(yùn)行日志信息
6.pytest -v -s 文件名.py:帶控制臺(tái)輸出結(jié)果,也輸出運(yùn)行詳細(xì)日志信息
7.pytest -x 文件名.py:一旦運(yùn)行到報(bào)錯(cuò),就停止運(yùn)行
8.pytest -k "類(lèi)名 and not 方法名":執(zhí)行某個(gè)關(guān)鍵字的用例
注意:示例中,測(cè)試用例名稱中包含“test_c”和“test_d”的都會(huì)被執(zhí)行
9.pytest -m [標(biāo)記名]:@pytest.mark.[標(biāo)記名]將運(yùn)行這個(gè)標(biāo)記的測(cè)試用例
對(duì)兩個(gè)測(cè)試方法進(jìn)行@pytest.mark.[標(biāo)記](méi)
的標(biāo)記。
運(yùn)行結(jié)果:
只運(yùn)行了被標(biāo)記的兩個(gè)測(cè)試方法。
10. pytest --maxfail=[num]
:當(dāng)運(yùn)行錯(cuò)誤到達(dá)num時(shí)候就停止運(yùn)行
對(duì)代碼進(jìn)行修改,模擬兩條運(yùn)行失敗測(cè)試用例。
運(yùn)行結(jié)果:
11. pytest --colection-only
:只收集測(cè)試用例
12. pytest --junitxml=./result.xml
:生成執(zhí)行結(jié)果文件
執(zhí)行結(jié)束后,對(duì)應(yīng)目錄下會(huì)生成一個(gè)結(jié)果文件。
13.pytest --setup-show
:回溯fixture的執(zhí)行過(guò)程
對(duì)原有代碼進(jìn)行修改。新增一個(gè)fixture修飾的函數(shù),并對(duì)test_demo1測(cè)試方法進(jìn)行修改。
運(yùn)行結(jié)果:
文末說(shuō)明:
以上內(nèi)容是我在閱讀pytest官方文檔后,依照個(gè)人理解進(jìn)行整理。內(nèi)容可能會(huì)有理解錯(cuò)誤之處,歡迎大家留言指正。謝謝!
以上就是Python自動(dòng)化測(cè)試框架pytest介紹安裝與運(yùn)行的詳細(xì)內(nèi)容,更多關(guān)于Python自動(dòng)化測(cè)試框架pytest的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Pytest 自動(dòng)化測(cè)試框架的使用
- pytest接口自動(dòng)化測(cè)試框架搭建的全過(guò)程
- pytest自動(dòng)化測(cè)試數(shù)據(jù)驅(qū)動(dòng)yaml/excel/csv/json
- python+pytest自動(dòng)化測(cè)試函數(shù)測(cè)試類(lèi)測(cè)試方法的封裝
- Pytest+Yaml+Excel?接口自動(dòng)化測(cè)試框架的實(shí)現(xiàn)示例
- 淺談基于Pytest框架的自動(dòng)化測(cè)試開(kāi)發(fā)實(shí)踐
- 自動(dòng)化測(cè)試Pytest單元測(cè)試框架的基本介紹
- python使用pytest接口自動(dòng)化測(cè)試的使用
- Pytest接口自動(dòng)化測(cè)試框架搭建模板
- 詳解如何使用Pytest進(jìn)行自動(dòng)化測(cè)試
- Pytest自動(dòng)化測(cè)試的具體使用
相關(guān)文章
Pandas操作CSV文件的讀寫(xiě)實(shí)現(xiàn)方法
這篇文章主要介紹了Pandas操作CSV文件的讀寫(xiě)實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11python實(shí)現(xiàn)桌面托盤(pán)氣泡提示
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)桌面托盤(pán)氣泡提示,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07python多進(jìn)程中的內(nèi)存復(fù)制(實(shí)例講解)
下面小編就為大家分享一篇python多進(jìn)程中的內(nèi)存復(fù)制(實(shí)例講解),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01python利用蒙版摳圖(使用PIL.Image和cv2)輸出透明背景圖
這篇文章主要介紹了python利用蒙版摳圖(使用PIL.Image和cv2)輸出透明背景圖,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08解決Pytorch在測(cè)試與訓(xùn)練過(guò)程中的驗(yàn)證結(jié)果不一致問(wèn)題
這篇文章主要介紹了解決Pytorch在測(cè)試與訓(xùn)練過(guò)程中的驗(yàn)證結(jié)果不一致問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06Python語(yǔ)言異常處理測(cè)試過(guò)程解析
這篇文章主要介紹了Python語(yǔ)言異常處理測(cè)試過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01解決pytorch 交叉熵?fù)p失輸出為負(fù)數(shù)的問(wèn)題
這篇文章主要介紹了解決pytorch 交叉熵?fù)p失輸出為負(fù)數(shù)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07python Pandas如何對(duì)數(shù)據(jù)集隨機(jī)抽樣
這篇文章主要介紹了python Pandas如何對(duì)數(shù)據(jù)集隨機(jī)抽樣,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07