每天進(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)并注明出處。