每天進步一點點,關注我們哦,每天分享測試技術文章
本文章出自【碼同學軟體測試】
碼同學公衆号:自動化軟體測試
碼同學抖音号:小碼哥聊軟體測試
requests庫是一個常用的用于http請求的子產品,它使用python語言編寫,在當下python系列的接口自動化中應用廣泛,本文将帶領大家深入學習這個庫,Python環境的安裝就不在這裡贅述了,我們直接開幹。
01
requests的安裝
windows下執行如下指令:
pip install requests -i http://pypi.douban.com/simple/--trust-host pypi.douban.com
mac終端下執行如下指令:
python3 -m pip install requests -i http://pypi.douban.com/simple/--trust-host pypi.douban.com
02
常用方法
1、get請求實戰:
# !/usr/bin python3 # encoding: utf-8 -*- # @author: 沙陌 微信:Matongxue_2# @Time:2021/3/25 9:54 # @Copyright:北京碼同學網絡科技有限公司
import requests
host='http://10.0.0.18:8080'def get(): """get接口請求:return:""" url =host+'/pinter/com/getSku' #接口位址 params={ 'id':1} resp = requests.get(url,params=params) status_code=resp.status_code #擷取響應狀态碼 print('響應狀态碼:{}'.format(status_code)) text=resp.text #擷取響應内容,結果類型是字元串 print('響應内容:{}'.format(text)) json=resp.json() #擷取響應内容,結果是字典類型 print('響應内容:{}'.format(json)) resp_headers=resp.headers #擷取響應headers print('響應header:{}'.format(resp_headers))
if__name__=='__main__': get()
結果如下:
D:\Python\Python36\python.exe D:/pycharmprojects/first/requetsstudy/pinter.py響應狀态碼:200 響應内容:{"code":"0","message":"success","data":{"skuId":1,"skuName":"ptest-1","price":"645","stock":709,"brand":"testfan"}}<class'dict'>響應内容:{'code':'0','message':'success','data':{'skuId':1,'skuName':'ptest-1','price':'645','stock':709,'brand':'testfan'}}響應header:{'Content-Type':'application/json;charset=UTF-8','Transfer-Encoding':'chunked','Date':'Fri,12Mar202122:13:49GMT','Keep-Alive':'timeout=20','Connection':'keep-alive'}
Process finished with exit code 0
上述代碼中請求發起後得到一個響應對象變量resp,那麼resp對象的常用方法如下:
2、post請求實戰
post請求的參數格式通常有多種,我們依次學習
第一種:表單形式的參數
import requests
host = 'http://10.0.0.18:8080'def post():"""post表單:return:""" url=host+'/pinter/com/login' #表單參數 data={ 'userName':'沙陌', 'password':'123456' }
resp=requests.post(url=url,data=data)status_code=resp.status_code#擷取響應狀态碼print('響應狀态碼:{}'.format(status_code))text=resp.text#擷取響應内容,結果類型是字元串print('響應内容:{}'.format(text))json=resp.json()#擷取響應内容,結果是字典類型print('響應内容:{}'.format(json))resp_headers=resp.headers#擷取響應headers print('響應header:{}'.format(resp_headers))
第二種:json格式參數
import requests
host='http://10.0.0.18:8080'def post_json(): """postjson:return:""" url =host+'/pinter/com/register' #header裡定義參數類型 headers={ 'Content-Type':'application/json'} #json參數 json={ "userName":"沙陌", "password":"1234", "gender":1, "phoneNum":"110", "email":"[email protected]", "address":"Beijing"} resp=requests.post(url=url,json=json) status_code=resp.status_code #擷取響應狀态碼 print('響應狀态碼:{}'.format(status_code)) text=resp.text #擷取響應内容,結果類型是字元串 print('響應内容:{}'.format(text)) json=resp.json() #擷取響應内容,結果是字典類型 print('響應内容:{}'.format(json)) resp_headers=resp.headers #擷取響應headers print('響應header:{}'.format(resp_headers))
3、put接口實戰
import requests
host='http://10.0.0.18:8080'def put(): """put 清酒:return:""" url = host+'/pinter/com/phone' #接口位址 #參數 json={ "brand":"Huawei", "color":"yellow", "memorySize":"64G", "cpuCore":"8核", "price":"8848", "desc":"全新上市"} resp=requests.put(url=url,json=json) status_code=resp.status_code #擷取響應狀态碼 print('響應狀态碼:{}'.format(status_code)) text=resp.text #擷取響應内容,結果類型是字元串 print('響應内容:{}'.format(text)) json=resp.json() #擷取響應内容,結果是字典類型 print('響應内容:{}'.format(json)) resp_headers=resp.headers #擷取響應headers print('響應header:{}'.format(resp_headers))
4、delete請求
5、request.session.request用法
免費領取 碼同學軟體測試 課程筆記+超多學習資料+完整視訊+最新面試題,可以轉發文章 + 私信「碼同學666」擷取資料哦
可以自動管理cookie,比如如下需要采用cookie認證的接口
結果如下:
D:\Python\Python36\python.exeD:/pycharmprojects/first/requetsstudy/pinter.py 響應狀态碼:200 響應内容:{"code":"0","message":"success","data":"$22,378,198"}
Process finished with exitcode 0
6、token關聯的接口如何做呢?
對于需要token關聯的接口來說,需要從登入接口的傳回值中提取token資訊,并傳遞給需要token的接口
結果如下:
D:\Python\Python36\python.exeD:/pycharmprojects/first/requetsstudy/pinter1.py響應狀态碼:200 響應内容:{"code":"0","message":"success","data":"$74,780,457"}Process finished with exit code 0
總結一下:
requests庫的請求方法裡參數衆多,是以簡單劃分一下:
- 查詢參數就用 params=params
- 表單參數就用 data=data
- json參數就用 json=json
- 請求頭資訊header就用 headers=headers
免費領取碼同學軟體測試課程筆記+超多學習資料+學習完整視訊,可以關注我們公衆号哦:自動化軟體測試
本文著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權并注明出處。