【2023最新教程】從0到1搭建pytest接口自動化測試框架(建議收藏)
整理了一些軟件測試方面的資料、面試資料(接口自動化、web自動化、app自動化、性能安全、測試開發(fā)等),有需要的小伙伴可以拉到文末,無套路自行領(lǐng)取~
文章目錄
一. 背景
二. 基礎(chǔ)環(huán)境
三. 項目結(jié)構(gòu)
四、框架解析
4.1 接口數(shù)據(jù)文件處理
4.2 封裝測試工具類
4.3 測試用例代碼編寫
4.4 測試用例運(yùn)行生成報告??

一. 背景
Pytest目前已經(jīng)成為Python系自動化測試必學(xué)必備的一個框架,網(wǎng)上也有很多的文章講述相關(guān)的知識。最近自己也抽時間梳理了一份pytest接口自動化測試框架,因此準(zhǔn)備寫文章記錄一下,做到盡量簡單通俗易懂,當(dāng)然前提是基本的python基礎(chǔ)已經(jīng)掌握了。如果能夠?qū)π聦W(xué)習(xí)這個框架的同學(xué)起到一些幫助,那就更好了~
二. 基礎(chǔ)環(huán)境
語言:python 3.8
編譯器:pycharm
基礎(chǔ):具備python編程基礎(chǔ)
框架:pytest+requests+allure
三. 項目結(jié)構(gòu)
項目結(jié)構(gòu)圖如下:

每一層具體的含義如下圖:

測試報告如下圖:

四、框架解析
4.1 接口數(shù)據(jù)文件處理

框架中使用草料二維碼的get和post接口用于demo測試,比如:
get接口:https://cli.im/qrcode/getDefaultComponentMsg
返回值:{“code”:1,“msg”:"",“data”:{xxxxx}}
數(shù)據(jù)文件這里選擇使用Json格式,文件內(nèi)容格式如下,test_http_get_data.json:
表示dataitem下有兩條case,每條case里面聲明了id, name, header, url, method, expectdata。如果是post請求的話,case中會多一個parameters表示入?yún)ⅲ缦拢?/strong>
為了方便一套腳本用于不同的環(huán)境運(yùn)行,不用換了環(huán)境后挨個兒去改數(shù)據(jù)文件,比如
測試環(huán)境URL為:https://testcli.im/qrcode/getDefaultComponentMsg
生產(chǎn)環(huán)境URL為:https://cli.im/qrcode/getDefaultComponentMsg
因此數(shù)據(jù)文件中url只填寫后半段,不填域名。然后config》global_config.py下設(shè)置全局變量來定義域名:
utils文件夾下,創(chuàng)建工具類文件:read_jsonfile_utils.py, 用于讀取json文件內(nèi)容:
運(yùn)行結(jié)果如下:

4.2 封裝測試工具類
utils文件夾下,
除了上面提到的讀取Json文件工具類:read_jsonfile_utils.py,
還有封裝request 請求的工具類:http_utils.py
從Excel文件中讀取數(shù)據(jù)的工具類:get_excel_data_utils.py(雖然本次框架中暫時未采用存放接口數(shù)據(jù)到Excel中,但也寫了個工具類,需要的時候可以用)

http_utils.py內(nèi)容:
4.3 測試用例代碼編寫
testcases文件夾下編寫測試用例:

test_caoliao_http_get_interface.py內(nèi)容:
企業(yè)中的系統(tǒng)接口,通常都有認(rèn)證,需要先登錄獲取token,后續(xù)接口調(diào)用時都需要認(rèn)證token。因此框架需要能處理在運(yùn)行用例前置和后置做一些動作,所以這里用到了conftest.py文件,內(nèi)容如下:
由于用例中用到了@pytest.mark.httptest給用例打標(biāo),因此需要創(chuàng)建pytest.ini文件,并在里面添加markers = httptest,不然會有warning,說這個Mark有問題。并且用例中用到的日志打印logging模板也需要在pytest.ini文件中增加日志配置。pytest.ini文件內(nèi)容如下:

4.4 測試用例運(yùn)行生成報告
pytest-html報告:

generateAllureReport.bat文件位置:
文件內(nèi)容:
allure open report/
Allure報告:

框架中用到的一些細(xì)節(jié)知識點(diǎn)和問題,如:
conftest.py和@pytest.fixture()結(jié)合使用
pytest中使用logging打印日志
python中獲取文件相對路徑的方式
python虛擬環(huán)境
pytest框架下Allure的使用
我會在后續(xù)寫文章再介紹。另外框架同樣適用于dubbo接口的自動化測試,只需要添加python調(diào)用dubbo的工具類即可。點(diǎn)擊【測試資料】菜單獲取框架下載地址。
軟件測試學(xué)習(xí)資源分享
最后感謝每一個認(rèn)真閱讀我文章的人,看著粉絲一路的上漲和關(guān)注,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走:


這些資料,對于想進(jìn)階【自動化測試】的朋友來說應(yīng)該是最全面最完整的備戰(zhàn)倉庫,這個倉庫也陪伴我走過了最艱難的路程,希望也能幫助到你!凡事要趁早,特別是技術(shù)行業(yè),一定要提升技術(shù)功底。希望對大家有所幫助……基礎(chǔ)知識、Linux必備、Shell、互聯(lián)網(wǎng)程序原理、Mysql數(shù)據(jù)庫、抓包工具專題、接口測試工具、測試進(jìn)階-Python編程、Web自動化測試、APP自動化測試、接口自動化測試、測試高級持續(xù)集成、測試架構(gòu)開發(fā)測試框架、性能測試、安全測試等配套學(xué)習(xí)資源免費(fèi)分享~
關(guān)注我的微信公眾號:【 程序員小濠】免費(fèi)獲取~
如果你不想再體驗(yàn)一次自學(xué)時找不到資料,沒人解答問題,堅持幾天便放棄的感受的話,可以加入我的軟件測試交流群:110685036 大家一起討論交流,里面也有各種軟件測試資料和技術(shù)交流
送上一句話:
如果不想成為“工具人”,就不要停下成長的步伐,打造屬于自己的獨(dú)特價值,具備不可替代的稀缺屬性,這樣才能不被淘汰,也能夠在遭遇變化時,隨自己所愿進(jìn)行選擇。