Python接口測試之如何使用requests發(fā)起請求
認(rèn)識requests模塊
1、requests介紹
requests是一個第三方庫,因此首先需要安裝這個庫,安裝三步走:
- 安裝:pip install requests
- 在文件中引用這個模塊:import requests
- 使用這個庫發(fā)起一個請求(get請求、post請求等)
2、使用requests發(fā)起get或者post請求
- 使用requests的post方法發(fā)起post請求
import requests resp = requests.post(api_url,json=req_data)
- 使用requests的request方法發(fā)起post請求
import requests
resp = requests.request("post",api_url,json=req_data)說明:這樣做,每調(diào)用一次requests.request就會去實例化一次Session類
- 所有的請求都在一個會話當(dāng)中
如果是session鑒權(quán)或者coockies鑒權(quán),可以直接利用Session類實例化。
這樣做了就不用額外處理了,直接利用會話對象s發(fā)起請求,如下所示:
import requests s = requests.Session() resp = s.request(method,api_url,json=req_data)
3、關(guān)于post/put/delete請求中,data參數(shù)和json參數(shù)格式
- json參數(shù)
json參數(shù):requests庫,針對請求體格式為application/json的,獨自寫了一個json參數(shù)的處理機(jī)制,數(shù)據(jù)類型是字典。因此,如果使用接送傳參,只需要將參數(shù)寫為字典的格式即可發(fā)起請求。
- data參數(shù)
data參數(shù):data為字典類型,默認(rèn)的請求體格式為的application/x-www-form-urlencoded。
4、Respobse對象
響應(yīng)數(shù)據(jù)返回主要有幾下幾類:
- resp.status_code -- 獲取響應(yīng)狀態(tài)碼
- resp.headers -- 獲取響應(yīng)頭
- resp.text -- 獲取響應(yīng)數(shù)據(jù)
- resp.json() -- 把json格式的響應(yīng)數(shù)據(jù),轉(zhuǎn)換成python字典
實戰(zhàn)
1、發(fā)起post請求
- 如何抓包獲取要模擬的接口詳情:


- 以下編寫代碼:
import requests
# 請求url
url = "https://openapiv5.ketangpai.com//UserApi/login"
'''請求方法'''
method = "post"
# 如果是post請求,需要查看請求頭當(dāng)中的content-type的數(shù)據(jù)格式類型
'''請求體數(shù)據(jù)'''
req_data = {
"email":"18812345678", # 隨意寫的
"password":"f876543", # 隨意寫的非真實
"remember":"0","code":"",
"mobile":"",
"type":"login",
"reqtimestamp":1697007648530}
'''第一種方法:使用requests的post方法發(fā)起post請求'''
# rt = requests.post(url=url,json=req_data)
# '''獲取響應(yīng)的原始數(shù)據(jù)'''
# print(rt.text)
# '''查看獲取響應(yīng)的原始數(shù)據(jù)的數(shù)據(jù)類型'''
# print(type(rt)) # <class 'requests.models.Response'>
# '''把響應(yīng)的json數(shù)據(jù),轉(zhuǎn)換成python字典。'''
# print(rt.json())
# print(type(rt.json())) # 字典類型
# print(rt.status_code,"\n",rt.headers,"\n\n",rt.cookies)
'''第二種方法:使用request方法發(fā)送post請求'''
respose = requests.request(method,url,json=req_data)
print(respose.text) # 結(jié)果與上述一致
'''
使用session方法進(jìn)行請求數(shù)據(jù)
'''
s = requests.Session()
resp = s.request(method,url,json=req_data)
print("http響應(yīng)數(shù)據(jù)(原始):",resp.text)2、發(fā)起get請求
盤點一下get請求的參數(shù):
- params參數(shù):get請求,請求參數(shù)一般是拼接在url后面的,因此請求參數(shù)使用params參數(shù)(字典類型)
- headers參數(shù):字典類型。用戶項目需要添加到請求頭的,傳參給它。
- verify參數(shù):遇到發(fā)起https請求的時候,要證書。 將verify=False就可以關(guān)掉證書要求,可以發(fā)送https請求
代碼實戰(zhàn)
1、抓包找到我們要做get請求實戰(zhàn)的接口

2、使用代碼編寫get請求發(fā)送

注意:接口連貫時,需要添加鏈接點“token”,才可以獲取響應(yīng)的完整信息
from time import sleep
import requests
# 請求url
url = "https://openapiv5.ketangpai.com//UserApi/login"
'''請求方法'''
method = "post"
# 如果是post請求,需要查看請求頭當(dāng)中的content-type的數(shù)據(jù)格式類型
'''請求體數(shù)據(jù)'''
req_data = {
"email":"18829489142",
"password":"fangbang666",
"remember":"0","code":"",
"mobile":"",
"type":"login",
"reqtimestamp":1697007648530}
'''
連續(xù)上個文件的post請求,從登錄接口中獲取token
'''
'''
使用session方法進(jìn)行請求數(shù)據(jù)
'''
s = requests.Session()
resp = s.request(method,url,json=req_data)
# print("http響應(yīng)數(shù)據(jù)(原始):",resp.text)
# print(resp.json())
# 獲取token,提供給下文
token = resp.json()["data"]["token"]
# 暫停6秒針
sleep(6)
url = "https://openapiv5.ketangpai.com//TourApi/isTourV2"
method = "get"
params = {
"version" : 32,
"courseid" : "MDAwMDAwMDAwMLOGy5WHqbdshNtyoQ"
}
# 往請求頭里面,添加鑒權(quán)的token處理
headers = {"token":token}
# 發(fā)請求的時候,帶上請求頭
res = requests.request(method,url,params=params,headers=headers)
print(res.text)結(jié)果如下:

總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python+seaborn實現(xiàn)聯(lián)合分布圖的繪制
聯(lián)合分布(Joint Distribution)圖是一種查看兩個或兩個以上變量之間兩兩相互關(guān)系的可視化圖,在數(shù)據(jù)分析操作中經(jīng)常需要用到。本文將通過seaborn實現(xiàn)繪制聯(lián)合分布圖,需要的可以參考一下2023-02-02
利用numpy實現(xiàn)一、二維數(shù)組的拼接簡單代碼示例
這篇文章主要介紹了利用numpy實現(xiàn)一、二維數(shù)組的拼接簡單代碼示例,具有一定借鑒價值,需要的朋友可以參考下。2017-12-12
Python數(shù)據(jù)類型之String字符串實例詳解

