登陸時登錄成功后服務器會返回一個token,這個token作為第二步驟的入參;第二個步驟請求成功后服務器會返回一個新token,然后這個token作為第三步驟的入參!如此一來的話,要用postman做接口測試,那么就要解決token這個參數的關聯問題:
第一,首先將這三個要測試的接口寫成collection:

第二,要設置postman的環境,設置名稱,url,以及token(只需要設置key就行),如下圖:

第三步,在Postman軟件的Tests中寫以下代碼,設置環境變量

第四步,修改第二以及第三個接口的入參的tokend值,格式用雙花括號:{{token}} 格式

到此就設置完成了,我們選擇登陸接口點擊send,此時token就會顯示在環境變量中了,這時第二個接口就可以執行了;然后再執行第三個接口,此時這個流程就可以跑通了!

總結:其實像這樣的1步驟產生token,2步驟關聯1步驟的token,3步驟關聯2步驟的token,4步驟關聯3步驟的token ,這種情況我也是第一次接觸,這種情況與我司的項目不同,我司項目中只要token有效期內就行,不會存在步驟間這種緊密的依賴關系。
如果把這種項目的接口寫成自動化腳本的話也比較冗長,因為我要在一個py中同時從步驟1寫到步驟4.這樣代碼比較長了,代碼如下:
#coding:utf-8
import requests,unittest
def chaxun():
u'查詢接口'
s = requests.session()
url = 'http://183.59.xxx.xx:8080/restful/api/authentication'
#登錄的入參
in_data = {
'username': "sendi",
'password': "2MDL010618",
'appid':"HDC2054490406A"
}
#請求頭部
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',
'Connection': 'keep-alive',
}
#發送請求
r =s.post(url,headers = header,data = in_data)
#獲取token
t = r.json()['token']
print('登錄返回的token是:%s' % t)
#'信息查詢接口'
url_2 = 'http://183.59.xxx.xx:8080/restful/api/custinfo'
#請求頭部
header2 = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',
'Connection': 'keep-alive'
}
#查詢的入參
in_data_2 = {
'customer':'佛山威立雅垃圾填埋處理有限公司',
'elecode':'IPCYW2267381990',
'elename':'IPCYW2267381990',
'NEName':'高明楊梅楊梅二樓綜合機房01/S-T64G-1',
'portName':'gei_4/8',
'disabled':0,
'is_vip':0,
'page':1,
'pagesize':10,
'token':t
}
r1 = s.post(url_2,headers = header2,data = in_data_2)
print(r1.json())
t1 = r1.json()['token']
print('查詢返回的token是:%s' % t1)
url_3 = 'http://183.59.xxx.xx:8080/restful/api/custflow'
# 登錄的入參
to1 = 'Bearer '+ t1
# 請求頭部
header3 = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',
'Connection': 'keep-alive'
}
in_data_3 = {
'customer': '廣東丹姿集團有限公司',
'elecode': 'IPCYW2270156401',
'elename': 'IPCYW2270156401',
'starttime': '2018061217',
'endtime': '2018062418',
'type': 0,
'page': 1,
'pagesize': 10,
'token': t1
}
r3 = s.post(url_3, headers=header, data = in_data_3)
print(r3.json())
if __name__=='__main__':
chaxun()
轉:https://blog.csdn.net/xgh1951/article/details/81665285