httprunner3.0 封装header

介绍下hook函数

1. setup_hooks

setup_hooks: 在 HTTP 请求发送前执行 hook 函数,主要用于准备工作;也可以实现对请求的 request 内容进行预处理。
在测试步骤层面的 setup_hooks 函数中,除了可传入自定义参数外,还可以传入 $request,该参数对应着当前测试步骤 request 的全部内容。因为 request 是可变参数类型(dict),因此该函数参数为引用传递,当我们需要对请求参数进行预处理时尤其有用。

2. teardown_hooks

teardown_hooks: 在 HTTP 请求发送后执行 hook 函数,主要用于测试后的清理工作;也可以实现对响应的 response 进行修改,例如进行加解密等处理。

在测试步骤层面的 teardown_hooks 函数中,除了可传入自定义参数外,还可以传入 $response,该参数对应着当前请求的响应实例(requests.Response)。

封装方法

def get_x_param_key(body):
    """
    生成x_param_key
    :param body: 
    :return: 
    """
    date_time = int(round(time.time() * 1000))
    md5 = hashlib.md5("{}{}".format(hashlib.md5(body.encode()).hexdigest(), date_time).encode()).hexdigest()

    return "{}{}{}{}".format(md5[0:10], md5[10:len(md5) - 10], date_time, md5[len(md5) - 10:])


def headers(request: dict):
    """
    封装headers
    :param request: 
    :return: 
    """
    # 获取headers,此时headers={}
    header_dict = request.get("headers", {})
    
    # 获取json,此时json=实际yaml中的json
    json_dict = request.get("req_json")

    # 获取x-param-key需要的body
    body = ""
    if None is not json_dict:
        body = json.dumps(request['req_json'])
    
    # 把header需要的字段传入
    header_dict['x-param-key'] = get_x_param_key(body)
    header_dict['Content-Type'] = "application/json"
    
    # 最后返给request
    request["headers"] = header_dict

yaml中的调用方法

config:
    name: ×××
    variables:
        username: ${super_admin()}
    base_url: ${base_url()}
teststeps:
-   name: getIsVisible
    setup_hooks:               # 调用钩子函数
        - ${headers($request, $username)}
    request:
        json:
          username: $username
        method: POST
        url: ×××
    validate:
    -   eq:
        - status_code
        - 200

作者:gz_tester
链接:https://www.jianshu.com/p/b0bad20ec015
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抱歉,我无法提供具体的原理图,因为这需要访问特定的硬件设计文档和资。然而,我可以向您解释一下USB 3.0的封装原理。 USB 3.0(也称为SuperSpeed USB)是一种高速数据传输标准,提供了比USB 2.0更快的传输速度和更大的带宽。USB 3.0封装原理图通常包括以下主要组件: 1. 主控制器:USB 3.0主控制器负责管理数据传输和协议处理。它是连接计算机主机和外部设备之间的桥梁。主控制器通常包括处理器、内存和其他必要的电路。 2. PHY芯片:PHY(Physical Layer)芯片是USB 3.0接口中的物理层处理器。它负责处理电信号转换、时钟管理、电源管理和信号完整性等方面的功能。PHY芯片还负责将数据流转换为可在USB总线上传输的电信号。 3. USB插座:USB 3.0封装原理图中的USB插座是与外部设备连接的接口。它通常包括一组针脚,用于传输数据、提供电源和接地等功能。 4. 过滤器和保护电路:USB 3.0封装原理图中可能包括一些过滤器和保护电路,用于过滤干扰、保护芯片免受电压峰值和静电放电等不良影响。 5. 时钟生成电路:USB 3.0接口需要精确的时钟信号来同步数据传输。因此,时钟生成电路通常包括在封装原理图中,以确保数据传输的准确性和可靠性。 这些是USB 3.0封装原理图中常见的组件,但具体的设计细节和配置可能会因厂商和产品而有所不同。如果您需要详细了解USB 3.0封装原理图,请参考相关的硬件设计文档或咨询相关专业人士。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值