柚子快報(bào)邀請(qǐng)碼778899分享:筆記 Pytest
接口測(cè)試:
目前業(yè)內(nèi)最主流的接口協(xié)議是HTTP,也有少量的TPC
系統(tǒng)中所有的數(shù)據(jù)都是基于接口的形式來(lái)進(jìn)行傳參的
前端----接口進(jìn)行數(shù)據(jù)傳輸-----后端
主流的UI自動(dòng)化測(cè)試框架:Selenium:Appium本質(zhì)上都是基于HTTP協(xié)議來(lái)實(shí)現(xiàn)的自動(dòng)化測(cè)試
再目前領(lǐng)域中,最核心的接口測(cè)試技術(shù)就是基于Pytest+Requests來(lái)實(shí)現(xiàn)的
針對(duì)與復(fù)雜的實(shí)際業(yè)務(wù)場(chǎng)景,我們需要有更為有效的處理手段:
自動(dòng)化測(cè)試用例管理框架:
1.UnitTest
2.Pytest
Pytest是UnitTest的升級(jí)版
環(huán)境安裝:pip install pytest
在自動(dòng)化測(cè)試中,數(shù)據(jù)驅(qū)動(dòng)主要分為幾種類(lèi)型
1.excel
2.yaml
3.config
4.test
5.xmind
...........
本次主要講yaml
附代碼:
基礎(chǔ)版
import pytest #調(diào)用倆庫(kù)
import requests
def testCase_001():
url= "http://erp2.hzb-it.com/app/common/login"
data = { "username": "admin", "password":"123" }
res = requests.post(url=url,json=data) print(res) #pytest運(yùn)行模式:是通過(guò)main函數(shù) if __name__ == '__main__': pytest.main(['-v','-s'])
進(jìn)階_1:傳參
import pytest import requests #調(diào)用pytest中mark函數(shù)進(jìn)行參數(shù)化,注意括號(hào)格式,傳入測(cè)試用例格式 @pytest.mark.parametrize(('user','pwd'),[('admin','123'),('','123')]) #注意括號(hào)格式def testCase_001(user,pwd): url = "http://erp2.hzb-it.com/app/common/login" data = { "username": user, #改為變量 'password': pwd } res = requests.post(url=url, json=data) print(res) #pytest運(yùn)行模式:是通過(guò)main函數(shù) if __name__ == '__main__': pytest.main(["-vs"])
進(jìn)階_2:數(shù)據(jù)驅(qū)動(dòng)
""" 第一步: 新建包,取名load_data并在此層級(jí)下創(chuàng)建yaml_load.py文件 pip install PyYaml """ def load(path): #用到load函數(shù),傳入路徑 """ 需要得到文件的地址,用open方法括號(hào)中填寫(xiě)path, 并關(guān)聯(lián)到load方法中,用只讀的形式進(jìn)行解讀,所以用“r”,并寫(xiě)明格式為UTF-8 """ file = open(path,'r',encoding='UTF-8') #調(diào)用yaml中的load函數(shù),Loader=yaml.FullLoader的意思是避免警告 data = yaml.load(file,Loader=yaml.FullLoader) return data #返回變量data
""" 第二步: 新建包,取名data,并在此層級(jí)下新建user.yaml文件,用于存放測(cè)試用例 以下為示例,有五條測(cè)試用例 """ - username: admin password: '123' - username: admin1 password: '123' - username: admin2 password: '123' - username: admin3 password: '123' - username: admin4 password: '123'
"""pytrst默認(rèn)讀取test開(kāi)頭的測(cè)試用例"""import pytest import requests from load_data import yaml_load#調(diào)用寫(xiě)好的作用于yaml格式內(nèi)容的數(shù)據(jù)讀取的文件@pytest.mark.parametrize("user1",yaml_load.load('E:\碼上課程\pytest_阿里\data/user.yaml')) #調(diào)用yaml_load文件并調(diào)用load函數(shù),把文件寫(xiě)入到user_1這個(gè)變量中def testCase_001(user1): url = "http://erp2.hzb-it.com/app/common/login" res = requests.post(url=url, json=user1) print(res) #pytest運(yùn)行模式:是通過(guò)main函數(shù)if __name__ == '__main__': pytest.main(['-v','-s'])
當(dāng)想斷言校驗(yàn)多個(gè)值的時(shí)候:
1.將所有的需交驗(yàn)內(nèi)容,存放在一個(gè)list,然后與預(yù)期結(jié)果一一對(duì)比
2。每一個(gè)數(shù)據(jù)assert一次
斷言沒(méi)有絕對(duì),要符合業(yè)務(wù)就是正確地
感謝觀看
柚子快報(bào)邀請(qǐng)碼778899分享:筆記 Pytest
相關(guān)閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。