前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >httprunner学习11-辅助函数debugtalk.py

httprunner学习11-辅助函数debugtalk.py

作者头像
上海-悠悠
发布2019-09-29 13:43:00
6570
发布2019-09-29 13:43:00
举报

前言

在httprunner里面,每个 YAML / JSON 文件的脚本都是独立运行的,有时候我们希望能跨文件使用公用的参数。 比如登录生成一个token,后面的用例都可以去引用这个token值,或者有些复杂的逻辑,需要写个函数去实现,比如操作数据库,加密解密等。 httprunner中可以使用 debugtalk.py 写辅助函数,实现复杂的功能。

登录函数获取token

新建一个debugtalk.py文件,写个登录函数,返回token值

代码语言:javascript
复制
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())

运行结果:

代码语言:javascript
复制
获取到token值:e388bfc10ca99135d1d58c00a1091311a0f0d48c

引用token

debugtalk.py 同一目录下新建一个 test_info_demo.yml 文件,引用 debugtalk.py 里面的函数使用${token()}

代码语言:javascript
复制
- 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, 283340479@qq.com]

给函数传参数,可以使用 ${token(test1, 123456)} 或者传变量 ${token($user, $psw)}

运行用例

hrun test_info_demo.yml

代码语言:javascript
复制
D:\soft\projectdemo>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:\soft\projectdemo\reports\1569424911.html

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 登录函数获取token
  • 引用token
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档