Python接口自動化淺析如何處理接口依賴_第1頁
Python接口自動化淺析如何處理接口依賴_第2頁
Python接口自動化淺析如何處理接口依賴_第3頁
Python接口自動化淺析如何處理接口依賴_第4頁
Python接口自動化淺析如何處理接口依賴_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第Python接口自動化淺析如何處理接口依賴這么多語法規(guī)范,大家會覺得一臉懵逼吧,細心的小伙伴會發(fā)現語法中..表示遞歸匹配所有子元素,簡單粗暴,用..獲取所有匹配的子元素,通過索引拿到想要的值,以下以實戰(zhàn)進行演練。

3、JsonPath源碼

defjsonpath(obj,expr,result_type='VALUE',debug=0,use_eval=True):

"""traverseJSONobjectusingjsonpathexpr,returningvaluesorpaths"""

obj:需要解析的對象,比如接口的返回值。

expr:匹配的表達式。

4、JsonPath實戰(zhàn)

以下編寫代碼進行演示。

fromjsonpathimportjsonpath

#json格式結果

res={

"code":0,

"msg":"OK",

"data":{

"token_info":{

"token_type":"Bearer",

"expires_in":"2025-05-2813:07:29",

"token":"eyJhbGciOiJIUzUxAiJ9.eyJtZW1iZZJfaWQiOjEwMDA1MTMxNSwiZXhwIjoxNTkwNjQyNDQ5fQ.s6A7pzLILf9tqpEDAU9wIPGGLGkgKEQ6EBHq26l-eUM5seCb48DWalkE7u16iRZv3uzD5hIDFbw41Jmi9V0T_Q"

#獲取res中的token

token=jsonpath(res,'$..token')[0]

print(token)

響應結果為:

eyJhbGciOiJIUzUxBiJ9.eyJtZW1iZZJfaWQiOpEwMDA1MTMxNSwiZXhwIjoxNTkwNjQyNDQ5fQ.

s6A7pzLILf9tqpEDAU9wIPGGLGkgKEQ6EBHq26leUM5seCb48SWalkE8u16iRZv3uzD5hIDFbw41Jmi9V0T_Q

四、token依賴實例

1.在config/setting.py配置文件中,配置全局的域名或IP

classDevConfig():

#項目的域名或IP

host=':8888'

config=DevConfig()

2.在config/config.yaml文件中,存入登錄賬號

config.yaml

user:

mobile_phone:'155********'

pwd:'12345678'

3.在項目根目錄下,新建文件夾middleware,文件夾下新建文件helper.py,用于處理token

4.首先編寫登錄接口,返回接口數據

helper.py

fromcommon.requests_handlerimportRequestsHandler

fromconfig.settingimportconfig

fromcommon.yaml_handlerimportyaml_data

deflogin():

"""登錄,接口返回token"""

req=RequestsHandler()

res=req.visit('post',config.host+'/login',json=yaml_data['user'])

returnres

print(login())

運行結果如下:

'code':0,

'msg':'OK',

'data':{

'token_info':{

'token_type':'Bearer',

'expires_in':'2025-05-2613:31:41',

'token':'eyJhbGciOiJIUpUxMiJ9.eyJtZW1iZXJfaWQiOjEwMDA1MTMxNSwiZXhwIjoxNTkwNDcxMTAxfQ.4QDNdQ-Wyecvpv7yRnMlCx1ZXpAlb8vpohxHht5OfNcjGn_yTaISyhmn7OMzjMGlz68sJ_uFbCh2NhIaO2p_Lg'

}

5.接下來編寫函數

獲取登錄接口返回值并提取token和token_type進行拼接。這里要使用jsonpath模塊提取返回的token和token_type。

helper.py

defsave_token():

"""保存token信息"""

res=login()

token=jsonpath(res,'$..token')[0]

token_type=jsonpath(res,'$..token_type')[0]

token="".join([token_type,token])

returntoken

print(save_token())

運行結果如下:

BearereyJhbGciOJIPzUxMiJ9.eyJtZW1iZXJfaWQiOjEwMDA1MTMxNSwiZXhwIjoxNTkwN

6.最后定義類

將token作為類屬性,整體代碼如下:

helper.py

fromcommon.requests_handlerimportRequestsHandler

fromconfig.settingimportconfig

fromcommon.yaml_handlerimportyaml_data

fromjsonpathimportjsonpath

deflogin():

"""登錄,返回token信息"""

req=RequestsHandler()

res=req.visit('post',config.host+'/login',json=yaml_data['user'])

returnres

defsave_token():

"""保存token信息"""

res=login()

token=jsonpath(res,'$..token')[0]

token_type=jsonpath(res,'$..token_type')[0]

token="".join([token_type,token])

Context.token=token

returntoken

classContext:

"""將token作為類屬性"""

token=''

if__name__=='__main__':

print(save_token())

運行結果如下:

BearereyJhbGciOiJIUzUxMiJ9.eyJtZW1iZXJfaWQiOjEwMDA1MTMxNSwiZXhwIjoxNTkwNDcz

7.充值接口攜帶token請求

importunittest

importrequests

frommiddleware.helperimportContext,save_token

classTestRecharge(unittest.TestCase):

defsetUp(self):

pass

deftearDown(self):

pass

deftest_recharge(self):

save_token()

token=Context.token

url=':88888/recharge'

payload={

"member_id":100051315,

"amount":80

res=requests.post(url,json=payload)

print(res.json())

if__name__=='__main__':

unittest.main()

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論