背景
用python代碼編寫接口測試用例的時候,需借用requests庫來發(fā)送get/post請求完成對接口的http調(diào)用,本文匯總編寫接口測試用例常用的一些方法。
接口測試
發(fā)起請求
1.帶參數(shù)的get請求:
import requests
data = {'key1':'value1','key2':'value2'}
rs?=?requests.get('http://httpbin.org/get',params=data)
2.帶參數(shù)的post請求
import requests
data = {'key1':'value1','key2':'value2'}
rs?=?requests.post('http://httpbin.org/post',data=data)
3.定制header信息:本地借助switchhost調(diào)試通過的接口調(diào)用,需要通過將host寫入到header里面可達到外網(wǎng)訪問的場景
import requests
headers={
'Host':'httpbin.org',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36',}
data = {'key1':'value1','key2':'value2'}
rs =?requests.get(url='http://172.24.31.5/get',headers=headers,params=data,verify=False)
4.帶登陸態(tài)訪問鏈接:常用于接口測試用例,使用session成功的登錄了某個網(wǎng)站,后續(xù)使用該session對象請求該網(wǎng)站的其他網(wǎng)頁都會默認使用該session之前使用的cookie等參數(shù)
post_url = "http://httpbin.org/post/login" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#登陸前的頁面
headers = {"User-Agent": "Mozilla/5.0"}
session = requests.session() ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #實例化session
post_data = {"email": "username", "password": "password"} ? ?#登陸的用戶名&密碼
session.post(post_url, headers=headers, data=post_data) ? ? ?# 使用session發(fā)送post請求獲取cookie保存到本地session中
url = "http://httpbin.org/post/profile" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??# 登錄后的頁面? ? ? ? ? ? ? ?
response1 = session.get(url, headers=headers) ? ? ? ? ? ? ? ? ? ? ? # 使用session請求登錄后的頁面,此時不用走登陸注冊頁面
response2 =?session.post(url, headers=headers) ? ? ? ? ? ? ? ? ? ? # 使用session請求登錄后的頁面,此時不用走登陸注冊頁面
5.allow_redirects=False:由于requests庫會自動處理重定向請求,會導致獲取不到重定向的URL,但有時部分接口需要獲取重定向的URL,此時需設置allow_redirects=False,就可以獲取重定向的地址t.headers['location']。
import requests
headers={
'Host':'httpbin.org',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36',}
s = requests.session() ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
r = s.get('http://httpbin.org/post/profile',
? ? ? ? ? headers=headers,
? ? ? ? ? allow_redirects=True, ? ? ? ? ? ? ? #禁止重定向?
? ? ? ? ? verify=False) ? ??
new_url = r.headers["Location"] ? ? ? ? ? #獲取location地址
print(new_url)
接口返回數(shù)據(jù)
1.rs.text ? ? ? ? ? ? ? ? ? # 以文本的方式顯示響應數(shù)據(jù)
2.json.loads(rs.text) ? ? ? #通過json轉(zhuǎn)碼后,變成常見的接口返回數(shù)據(jù){"code":0,"message":"success","data":[]}
3.rs.status_code ? ? ? # 響應的狀態(tài)碼,對應于200/3XX/5XX
注:文章涉及到的URL不是真實存在,實際使用需替換成真實的接口地址