基于requests框架實(shí)現(xiàn)接口自動(dòng)化測試項(xiàng)目實(shí)戰(zhàn)

每天進(jìn)步一點(diǎn)點(diǎn),關(guān)注我們哦,每天分享測試技術(shù)文章

本文章出自【碼同學(xué)軟件測試】

碼同學(xué)公眾號:自動(dòng)化軟件測試

碼同學(xué)抖音號:小碼哥聊軟件測試


requests庫是一個(gè)常用的用于http請求的模塊,它使用python語言編寫,在當(dāng)下python系列的接口自動(dòng)化中應(yīng)用廣泛,本文將帶領(lǐng)大家深入學(xué)習(xí)這個(gè)庫

Python環(huán)境的安裝就不在這里贅述了,我們直接開干。


01?? requests的安裝


windows下執(zhí)行如下命令

pipinstallrequests-ihttp://pypi.douban.com/simple/--trust-host pypi.douban.com

mac終端下執(zhí)行如下命令

python3-mpipinstallrequests-ihttp://pypi.douban.com/simple/--trust-host pypi.douban.com


02?? 自動(dòng)化requests模塊的常用方法

2.1get請求實(shí)戰(zhàn)

# !/usr/bin python3? ? ? ? ? ? ? ??

# encoding: utf-8 -*-? ? ? ? ? ? ??

# @author: 沙陌 微信:Matongxue_2

# @Time:2021/3/25 9:54?

# @Copyright:北京碼同學(xué)網(wǎng)絡(luò)科技有限公司

importrequests

host='http://10.0.0.18:8080'

defget():

"""

get接口請求

:return:

"""

url =host+'/pinter/com/getSku'#接口地址

? params={

'id':1

}

? resp = requests.get(url,params=params)

status_code=resp.status_code#獲取響應(yīng)狀態(tài)碼

? print('響應(yīng)狀態(tài)碼:{}'.format(status_code))

text=resp.text#獲取響應(yīng)內(nèi)容,結(jié)果類型是字符串

? print('響應(yīng)內(nèi)容:{}'.format(text))

json=resp.json()#獲取響應(yīng)內(nèi)容,結(jié)果是字典類型

print('響應(yīng)內(nèi)容:{}'.format(json))

resp_headers=resp.headers#獲取響應(yīng)headers

print('響應(yīng)header:{}'.format(resp_headers))

if__name__=='__main__':

?get()

結(jié)果如下

D:\Python\Python36\python.exe D:/pycharmprojects/first/requetsstudy/pinter.py

響應(yīng)狀態(tài)碼:200?

響應(yīng)內(nèi)容:{"code":"0","message":"success","data":{"skuId":1,"skuName":"ptest-1","price":"645","stock":709,"brand":"testfan"}}

響應(yīng)內(nèi)容:{'code':'0','message':'success','data':{'skuId':1,'skuName':'ptest-1','price':'645','stock':709,'brand':'testfan'}}

響應(yīng)header:{'Content-Type':'application/json;charset=UTF-8','Transfer-Encoding':'chunked','Date':'Fri,12Mar202122:13:49GMT','Keep-Alive':

'timeout=20','Connection':'keep-alive'}

Process finishedwithexit code0

上述代碼中請求發(fā)起后得到一個(gè)響應(yīng)對象變量resp,那么resp對象的常用方法如下

2.2post請求實(shí)戰(zhàn)

post請求的參數(shù)格式通常有多種,我們依次學(xué)習(xí)

第一種表單形式的參數(shù)

```python

importrequests?

host='http://10.0.0.18:8080'

defpost():"""post表單:return:"""url=host+'/pinter/com/login'#表單參數(shù)data={

'userName':'沙陌','password':'123456'}resp=requests.post(url=url,data=data)status_code=

resp.status_code#獲取響應(yīng)狀態(tài)碼print('響應(yīng)狀態(tài)碼:{}'.format(status_code))text=resp.text#獲取響應(yīng)內(nèi)容,結(jié)果類型是字符串print('響應(yīng)內(nèi)容:{}'.format(text))json=resp.json()#獲取響應(yīng)內(nèi)容,結(jié)果是字典類型print('響應(yīng)內(nèi)容:{}'.format(json))resp_headers=resp.headers#獲取響應(yīng)headers?

print('響應(yīng)header:{}'.format(resp_headers))```


免費(fèi)領(lǐng)取?碼同學(xué)軟件測試?課程筆記+超多學(xué)習(xí)資料+完整視頻+最新面試題,可以轉(zhuǎn)發(fā)文章?+?私信「碼同學(xué)666」獲取資料


第二種json格式參數(shù)

importrequests

host='http://10.0.0.18:8080'

defpost_json():

"""

postjson

:return:

"""

url =host+'/pinter/com/register'

#header里定義參數(shù)類型

? headers={

'Content-Type':'application/json'

}

? #json參數(shù)

? json={

"userName":"沙陌",

"password":"1234",

"gender":1,

"phoneNum":"110",

"email":"beihe@163.com",

"address":"Beijing"

}

? resp=requests.post(url=url,json=json)

status_code=resp.status_code#獲取響應(yīng)狀態(tài)碼

print('響應(yīng)狀態(tài)碼:{}'.format(status_code))

text=resp.text#獲取響應(yīng)內(nèi)容,結(jié)果類型是字符串

? print('響應(yīng)內(nèi)容:{}'.format(text))

json=resp.json()#獲取響應(yīng)內(nèi)容,結(jié)果是字典類型

print('響應(yīng)內(nèi)容:{}'.format(json))

resp_headers=resp.headers#獲取響應(yīng)headers

? print('響應(yīng)header:{}'.format(resp_headers))

2.3put接口實(shí)戰(zhàn)

importrequests

host='http://10.0.0.18:8080'

defput():

"""

put 清酒

:return:

"""

? url = host+'/pinter/com/phone' #接口地址

? #參數(shù)

? json={

"brand":"Huawei",

"color":"yellow",

"memorySize":"64G",

"cpuCore":"8核",

"price":"8848",

"desc":"全新上市"

}

? resp=requests.put(url=url,json=json)

status_code=resp.status_code#獲取響應(yīng)狀態(tài)碼

? print('響應(yīng)狀態(tài)碼:{}'.format(status_code))

text=resp.text#獲取響應(yīng)內(nèi)容,結(jié)果類型是字符串

print('響應(yīng)內(nèi)容:{}'.format(text))

json=resp.json()#獲取響應(yīng)內(nèi)容,結(jié)果是字典類型

print('響應(yīng)內(nèi)容:{}'.format(json))

resp_headers=resp.headers#獲取響應(yīng)headers

print('響應(yīng)header:{}'.format(resp_headers))

2.4delete請求

2.5request.session.request用法

可以自動(dòng)管理cookie,比如如下需要采用cookie認(rèn)證的接口

結(jié)果如下:

D:\Python\Python36\python.exeD:/pycharmprojects/first/requetsstudy/pinter.py 響應(yīng)狀態(tài)碼:200?

響應(yīng)內(nèi)容:{"code":"0","message":"success","data":"$22,378,198"}

Process finished with exit code0

2.6token關(guān)聯(lián)的接口如何做呢?

對于需要token關(guān)聯(lián)的接口來說,需要從登錄接口的返回值中提取token信息,并傳遞給需要token的接口

結(jié)果如下:

D:\Python\Python36\python.exeD:/pycharmprojects/first/requetsstudy/pinter1.py

響應(yīng)狀態(tài)碼:200?

響應(yīng)內(nèi)容:{"code":"0","message":"success","data":"$74,780,457"}

Process finished with exit code0

總結(jié)一下:

requests庫的請求方法里參數(shù)眾多,所以簡單劃分一下,查詢參數(shù)就用params=params?

表單參數(shù)就用data=data?

json參數(shù)就用json=json?

請求頭信息header就用headers=headers


END

免費(fèi)領(lǐng)取碼同學(xué)軟件測試課程筆記+超多學(xué)習(xí)資料+學(xué)習(xí)完整視頻,可以關(guān)注我們公眾號哦:自動(dòng)化軟件測試

本文著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請聯(lián)系作者獲得授權(quán)并注明出處。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容