【HttpRunner学习笔记】8- HttpRunner debugtalk 自定义钩子函数的应用

引言

在我们对实际业务进行接口自动化的落地当中,难免会遇到特殊场景的处理,比如:

  • 获取token
  • 前置处理函数setup_hooks和后置处理函数teardown_hooks
  • 常见的加解密
  • sign等一系列签名认证
  • 操作数据库
  • 编写随机函数
  • 读取图片、或者其他格式文件等函数
  • 构造参数化数据
  • 对返回数据类型进行转换
  • 参数化csv里面数据类型的转换
  • 以及封装一些常用的函数

1. 简单的引用自定义函数

我们还是用之前的例子,获取指定的author请求;

首先需要向request传进一个我们指定的author_id,我们先将author_id作为在debugtalk.py文件中定义函数中的返回值,内容如下:

def get_author_ids():
    from loguru import logger
    l = [
        '801994',
        '1229873',
        '757351',
        '859990'
    ]
    logger.debug(f'使用的author_id 列表 >>> {l}')

    return l

然后在测试用例文件的内容如下:

引用方式:

${function()}  # function() 即为在debugtalk.py中定义的函数

测试用例完整代码如下:

config:
    name: testcase description
    parameters:
        author_id: ${get_author_ids()}
    variables: {}
    verify: false
    base_url: ${ENV(base_url)}
teststeps:
-   name: /api2/user/followings/status
    request:
        cookies:
            Hm_lpvt_b85cbcc76e92e3fd79be8f2fed0f504f: '1628342649'
            Hm_lvt_b85cbcc76e92e3fd79be8f2fed0f504f: 1628163442,1628172667,1628334320
        headers:
            COMMON_ACCESS_TOKEN: MGJRTW5TU0xiU3M0TEY1QUg0N1NnTFhsWXVoYm5nOFlrbVM5MEpRbDEzaTI0TTk4NHFhTEZMSW1YZ0lnNEw0WU0wMXdhbVJFYTBmNnNrNDJpQUZRcG4xZXFwWHQwc3ZoL0Y2U0dhMHM0WTRrZ3RGU2dYMDM0WEU2OGU4b3FRTDA=
            COMMON_ACCESS_TOKEN_SECRET: NjM4ODgxLCwxNjI4MzQyNjAzOTM1LCxodHRwczovL3N0YXRpYy5xaWRpYW5sYS5jb20vd29zaGlwbV9kZWZfaGVhZF8xLmpwZywseWMsLDRkNDI0MzM0Y2U2NDQ2NDI5MThlNjFiZjNlZmQ5NjgzLTAtMQ==
        method: GET
        params:
            authorIds: ${author_id}
        url: /api2/user/followings/status
    validate:
    -   eq:
        - status_code
        - 200

执行结果可以看到,我们打印的日志:

在这里插入图片描述

2. 钩子函数:前置处理、后置处理

首先在debugtalk.py文件中定义钩子函数,然后直接在测试步骤使用setup_hooks或者teardown_hooks,然后调用自定义的钩子函数即可;

举个例子:
使用企业微信作为例子:
在这里插入图片描述

debugtalk.py 代码如下:

def get_wechat_token():
    import requests
    data = {
            'corpid': 'wwb4f39b*****a8a3a',
            'corpsecret': 'Oyc2BalKGSP1KCmdld0P2pSBDaXSeNrHYEwKX8V4sB8'
        }
    response = requests.get(url='https://qyapi.weixin.qq.com/cgi-bin/gettoken',
                            params=data)
    return response

from httprunner.response import ResponseObject
def setup_hook():
    print("前置处理 >>> setup。")


def teardown_hook(response: ResponseObject):
    token = response.resp_obj.json()['access_token']
    print("后置处理 >>> response:", token)
    return len(token)

测试用例get_depart_member.yml 代码如下:

config:
    name: 获取企业微信的部门成员
    verify: false
    base_url: https://qyapi.weixin.qq.com
    variables:
        department_id: 1
    export:
        - token
teststeps:
-   name: 获取token
    request:
        method: GET
        params:
            corpid: wwb4f39b*****a8a3a
            corpsecret: Oyc2BalKGSP1KCmdld0P2pSBDaXSeNrHYEwKX8V4sB8
        url: /cgi-bin/gettoken
    extract:
        token: body.access_token
    teardown_hooks:
        - ${teardown_hook($response)}
    validate:
        - eq:
            - status_code
            - 200
-   name: 获取企业微信的部门成员
    request:
        method: GET
        url: /cgi-bin/user/simplelist
        params:
            access_token: ${token}
            department_id: ${department_id}
            fetch_child: FETCH_CHILD
    setup_hooks:
        - ${setup_hook()}
    validate:
    -   eq:
        - status_code
        - 200

使用命令执行:hrun -s testcases\wechat\get_depart_member.yml

在这里插入图片描述
后续有内容再补充。。。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值