python写后台接口请求出错_python登录接口测试问题记录与解决
最近做一個登錄接口測試中,發(fā)現(xiàn)了以下的一些場景,本次將所遇到的問題以及解決過程做下記錄:
1、抓包發(fā)現(xiàn)登錄操作時,先后請求三個接口,并且每個接口有關(guān)聯(lián)
2、每次請求都需要保留cookie信息,下個接口請求需要
3、每個接口返回數(shù)據(jù)非json格式,提取數(shù)據(jù)需要另外操作
本篇文檔就從這三點(diǎn)來開始講
1、首先看抓包情況與大致框架分析
image.png
先后請求3條接口,然后我們一條一條來分析
①整體來看,都是get請求,且共同參數(shù)都是service、callback、_,第2條和第3條都還有其他的參數(shù)
image.png
②第1條接口返回的數(shù)據(jù)中data下的兩個字段就是第2個接口的參數(shù)
image.png
image.png
③第2條接口返回數(shù)據(jù)中的某個字段是第3條接口的參數(shù)
綜合以上就寫大致的框架
#coding:utf-8
import requests,re
url = "xxxxx"
#tt就代替那個_作為參數(shù)了
def login1(service,callback,tt):
pass
#三條接口相互依賴,第2個接口參數(shù)來源第1個接口返回值
def login2():
pass
#三條接口相互依賴,第3個接口參數(shù)來源第2個接口返回值
def login3():
pass
if __name__ == '__main__':
service = 'xxxxxx'
callback = 'xxxxxxx'
tt = 'xxxxxxx'
login3(service, callback, tt)
2、然后就是正常的編寫get請求了
image.png
這里的返回值因?yàn)椴皇莏son格式,就不用json.loads() 這么寫了,先打印查看
image.png
3、上面已經(jīng)說到,這里的lt和execution 都是下個接口的參數(shù),所以此刻需要將他們的值提取出來
這就涉及到正則提取了
ps:推薦個調(diào)試的網(wǎng)站 http://tools.jb51.net/regex/javascript
python正則表達(dá)學(xué)習(xí)地址:https://www.jb51.net/article/177521.htm
python中這里寫起來也簡單,具體見下面腳本中的備注信息
def login1(service,callback,tt):
print("開始執(zhí)行l(wèi)ogin1")
url = url1 + "/sso/login"
params = {
"service":service,
"callback":callback,
"_":tt
}
req = requests.get(url = url,params=params)
print(req.text)
#返回結(jié)果轉(zhuǎn)換為字符串
response_str = str(req.text)
#正則提取字符串信息,返回列表,提取data下的信息
m = re.findall(r'{.*?}',response_str)[0]
#data下就是key-value形式,通過eval()將字符串轉(zhuǎn)換為字典,然后字典中通過key提取到value值
lt = eval(m)['lt']
execution = eval(m)['execution']
return lt,execution
4、第2個接口編寫,并將第1個接口返回的東西帶入
def login2(service,callback,tt):
lt,execution = login1(service,callback,tt)
print("開始執(zhí)行l(wèi)ogin2")
執(zhí)行過程中發(fā)現(xiàn)報302錯誤
302錯誤:redirect,代表暫時性轉(zhuǎn)移;意思就是你訪問網(wǎng)址a,但是因?yàn)榉?wù)端的攔截器或者其他代碼處理,會被重定向到網(wǎng)址b。
利用requests模擬登錄時,直接使用request.get(url),容易造成 302 重定向,究其原因是因?yàn)閏ookie不持久(requests自帶cookie處理,但不持久)
所以這里 我們就需要將cookie存儲下來并使用起來
具體cookie用法見路徑:https://www.cnblogs.com/liuzhzhao/p/12114453.html
5、知道怎么使用了,那么我們代碼修改一下
image.png
后面的腳本就照葫蘆畫瓢了,第1個接口的cookie信息保存給到第2個接口使用,第2個接口的cookie保存,給到第3個接口使用
整體上就寫完了,后面需要單獨(dú)補(bǔ)充下就好
本次主要知識點(diǎn):接口依賴調(diào)用、cookie保存與使用、python關(guān)鍵信息正則提取
總結(jié)
以上是生活随笔為你收集整理的python写后台接口请求出错_python登录接口测试问题记录与解决的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mysql商品和图片表_【mysql】数
- 下一篇: mongodb查询值不为空_MongoD