Fork me on GitHub

httprunner 4.x学习 - 11 hook 机制

前言

hook机制,就是在发送请求前做一些预处理或在请求完成后后置处理

  1.setup_hooks :主要用于处理接口前置准备,比如对请求 request 参数签名加密等操作

  2.teardown_hooks:主要用于后置清理,比如对返回 respone 解密、删除数据库数据等

测试步骤添加hook

debugtalk.py编写两个以下两个函数

def hook_up():
    print("前置操作:hook_up")

def hook_down():
    print("后置操作:hook_down")

在步骤中引用

config:
  name: hook

teststeps:
-
  name: post
  request:
    method: POST
    setup_hooks:
      - ${hook_up()}
    teardown_hooks:
      - ${hook_down()}
    url: ${ENV(base_url)}/login
    json:
      username: "admin1"
      password: "123456"

  validate:
    - eq: [status_code, 200]
    - eq: [headers."Content-Type", "application/json"]

setup_hooks使用

传一个内置 request 参数,使用setup_hooks预处理,debugtalk.py代码如下

def request_add_sign(request):
    # 新增 sign 参数
    request["req_json"]["sign"] = "sign *************"

    return request

 

config:
  name: hook

teststeps:
-
  name: post
  request:
    method: POST
    url: ${ENV(base_url)}/login
    json:
      username: "admin1"
      password: "123456"
  setup_hooks:
    - ${request_add_sign($request)}
    
  validate:
    - eq: [status_code, 200]
    - eq: [headers."Content-Type", "application/json"]

teardown_hooks 使用

在接口返回response后进行处理,比如response加上参数msg="操作成功"

def response_add_msg(response):
    # 新增 msg 参数
    response["msg"] = "操作成功"

    return response
config:
  name: hook

teststeps:
-
  name: post
  request:
    method: POST
    url: ${ENV(base_url)}/login
    json:
      username: "admin1"
      password: "123456"
  teardown_hooks:
    - ${response_add_msg($response)}

  validate:
    - eq: [status_code, 200]
    - eq: [headers."Content-Type", "application/json"]

 

 

 

posted @ 2024-04-28 09:51  测栈云  阅读(31)  评论(0编辑  收藏  举报