python 接口請求碎碎念

背景

用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不是真實存在,實際使用需替換成真實的接口地址

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

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

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