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