httprunner學習11-輔助函數debugtalk.py
- 2019 年 10 月 8 日
- 筆記
前言
在httprunner裡面,每個 YAML / JSON
文件的腳本都是獨立運行的,有時候我們希望能跨文件使用公用的參數。 比如登錄生成一個token,後面的用例都可以去引用這個token值,或者有些複雜的邏輯,需要寫個函數去實現,比如操作資料庫,加密解密等。 httprunner中可以使用 debugtalk.py
寫輔助函數,實現複雜的功能。
登錄函數獲取token
新建一個debugtalk.py
文件,寫個登錄函數,返回token值
import requests host = "http://127.0.0.1:8000/" def token(user="test", psw="123456"): ''' 登錄獲取token # # 上海悠悠,QQ交流群:750815713 :param user: 用戶名 :param psw: 密碼 :return: token ''' login_url = host+"api/v1/login/" headers = { "Content-Type": "application/json" } body = { "username": user, "password": psw } r = requests.post(login_url, headers=headers, json=body) try: return_token = r.json()["token"] except: print("大兄弟,返回的不是標準json格式,或者沒取到token, 別問我為什麼報錯, 因為返回內容:n %s" % r.text) return_token = '' return return_token if __name__ == "__main__": print("獲取到token值:%s" % token())
運行結果:
獲取到token值:e388bfc10ca99135d1d58c00a1091311a0f0d48c
引用token
debugtalk.py
同一目錄下新建一個 test_info_demo.yml
文件,引用 debugtalk.py
裡面的函數使用${token()}
- config: name: logincase variables: {} # 上海悠悠,QQ交流群:750815713 - test: name: get user info case1 request: url: http://127.0.0.1:8000/api/v1/user/info/ method: GET headers: Content-Type: application/json User-Agent: python-requests/2.18.4 Authorization: Token ${token()} # 引用token validate: - eq: [status_code, 200] - eq: [headers.Content-Type, application/json] - eq: [content.0.age, 20] - eq: [content.0.name, yoyo] - eq: [content.0.mail, [email protected]]
給函數傳參數,可以使用 ${token(test1, 123456)}
或者傳變數 ${token($user, $psw)}
運行用例
hrun test_info_demo.yml
D:softprojectdemo>hrun test_info_demo.yml get user info case1 INFO GET http://127.0.0.1:8000/api/v1/user/info/ INFO status_code: 200, response_time(ms): 199.26 ms, response_length: 190 bytes INFO start to validate. . ---------------------------------------------------------------------- Ran 1 test in 0.653s OK INFO Start to render Html report ... INFO Generated Html report: D:softprojectdemoreports1569424911.html