1. 程式人生 > >postman設定token關聯引數-以及自動化指令碼的實現

postman設定token關聯引數-以及自動化指令碼的實現

還是之前群友的經歷,該專案再登陸時登入成功後伺服器會返回一個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()

注意:像這種1234步驟間存在緊密依賴關係的介面,在寫指令碼時要注意必須要用同一個seesion去請求,不然還是失敗!!!!

在寫程式碼的時有個小插曲,再寫第三個介面的入參時,我的入參key值多寫了一個空格,如:“token ”,寫好後除錯一致提示我token不能為空,尼瑪,整整折騰了半小時,後來打印出來才發現token後面引號前面多了一個空格,哎,還是大意導致的!

寫程式碼還是需要120分的謹慎啊!再次記錄一下,以此為鑑!!

好了,到這裡就快結束了,以上只是個人經驗的小結,有不對的地方還希望各位大神指正!小弟感激!