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