介面測試中,如何優雅的解決用例之間引數呼叫?
阿新 • • 發佈:2021-01-12
近期一個介面測試實戰小問題引發了眾多測試同學的關注,本文整理了學員疑惑之處和學院老師的解答,供大家一起學習參考。
Question by @Vantas
在介面測試過程中,我遇到一個問題:
如何將上一用例的返回值的某個 key 的 value 值,當作下一用例的入參進行使用呢?
例如第一個用例是登入,後續每一個介面都需要用到登入介面返回的 token,用什麼方式去傳這個 token 呢?如果後面介面需要多個入參呢(即需要登入的 token,也需要另一個介面的 id 值)?
Answer by @Wayyt
要看使用的是什麼工具。如果是用 Java/Python 程式碼,那返回值轉成 JSON,然後提取出來就可以了。
Question by @Vantas
我使用的是 Pytest,把返回值賦給了一個全域性變數的字典,後面用例直接呼叫字典,這樣可以嗎?
用 JSON 或字典返回,再後面用例怎麼傳入呢,一直沒弄清楚,是用fixtrue呼叫方法名,然後用例裡直接寫返回的變數名嗎?
那像第三個支付用例,裡面需要 token,還需要 URL 後面加 “orderids”,這種需要前面兩個用例得返回值,怎麼寫呢?不能方法名中傳入兩個 fixtrue 把?那如果需要多個引數呢?如果用例非常多的話,用例之間引數呼叫關聯比較多,怎麼樣維護比較好呢?
有沒有最優方式?以下是示例程式碼:
def setup(): self.t=globals() #登陸 def test_fxLogin(self): url = “http://www.xxx.com/token” data = {“username”:“hffx”,“password”:“123456”,“platformType”:“NORMAL”} headers = {“Content-Type”: “application/json”} r = requests.post(url, data=json.dumps(data), headers=headers) result = r.text print(result) jsr = json.loads(result) fxtoken = jsr[‘data’] self.t[‘fx’]=fxtoken assert r.status_code==200 #下單 def test_buyprocedure(self): url = “http://www.xxx.com/” data = {“data”}]} headers = {“Authorization”:self.t[‘fx’],“Content-Type”: “application/json”} r=requests.post(url,data=json.dumps(data),headers=headers) result = r.text print(result) jsr=json.loads(result) orderid=jsr[data][id] self.t[‘orderids’]=orderid assert r.status_code == 200 #支付 def test_payprocedure(self): url = “http://www.xxx.com/”+self.t[‘orderids’] data