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