首頁 > 軟體

python介面測試返回資料為字典取值方式

2022-02-12 16:00:21

介面測試返回資料為字典取值

介面測試通常需要校驗返回資料跟預期結果是否一致,這個時候如果返回資料為字典,那麼我們要拿到我們想要的key對應的values時,需巧妙的運用dict.keys()、dict.values()和for迴圈,以及列表相關知識點。

範例

這是我調介面返回的資料,該資料為dict型別,我的目標是要拿到account。

#介面返回的資料:
api_result = {'code': '000001', 
'dataMap': {'data': 
{'amount': 0, 'billingWeight': 0, 'quantity': 0}},
 'failureString': '', 'failures': [], 
 'flag': 'success', 'hasError': False, 'message': '請求成功'}

方法

#方法1:
print("這是方法1")
for i in api_result.keys():
    if i == 'dataMap':
        print(api_result[i]['data']['amount'])
#方法2:
print("這是方法2")
getkey = api_result.get('dataMap')
# print(getkey)
cc =list(getkey.values())[0]
print(cc['amount'])
#方法3:
print("這是方法3")
print(api_result['dataMap']['data']['amount'])

執行結果

本次介紹了三個方法,一個迴圈,一個利用keys()和values(),另外一個直接巢狀取key對應的值。當然大家可以看出來,最後一種方法是最快最簡單的。

python介面測試--sign簽名

最近測試的專案由於需要給第三方呼叫,所以增加了安全性的認證,所有的介面呼叫都需要簽名進行驗籤,

於是研究了一下使用python按照介面簽名規範生成sign值。

介面簽名規範

1、請求引數中的 sign 引數和為空的引數去除後,剩餘的多個鍵值對,將鍵按照字典序排序,

並以key1=value1&key2=value2的格式拼成一個字串

2、拼接的字串需要URLEncode

3、將開發者的key拼接在第一步中排序後的字串後面得到待簽名字串

4、使用md5演演算法加密待加密字串並轉為大寫即為sign

實現程式碼

下面為實現的 程式碼片。

import time
import requests
import  json
import urllib,hashlib
url = "http://www.xxx.xx"
#獲取當前的時間戳
stamp = time.time()
print(stamp)
#轉換為int型別的13位時間戳
timestam = int(round(stamp*1000))
print(timestam)
time_new = str(timestam)
print(type(time_new))
data ={
    'appId':'3301820001',
    "outTradeNo":"20201026001",
    "amount":"100",
    "body":"test",
    "timestamp":time_new,
    "notifyUrl":"http://localhost:8080/notify",
}
#將鍵按照字典序排序
data_order = sorted(data.items(),key=lambda x:x[0],reverse=False)
#將列表轉化為字典
data_new = dict(data_order)
print(data_new)
#將key=value鍵值對進行url編碼
datanew = urllib.parse.urlencode(data_new)
datadic = datanew + "&key=BF1BDE5A649724056F904A9335B1C1C7455655"
print(datadic)
#建立md5物件
m = hashlib.md5()
m= hashlib.md5(datadic.encode())
data_md5 = m.hexdigest()
#將小寫字母切換為大寫字母
sign=data_md5.upper()
print(sign)

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com