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