前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HttpRunner-3-Hook

HttpRunner-3-Hook

作者头像
Python研究所
发布2022-06-17 09:03:52
2450
发布2022-06-17 09:03:52
举报
文章被收录于专栏:大飞的部落阁

什么是 hook?

hook 俗名钩子函数,就是在特定情况下才会触发的 Api

举个 hook 栗子

就像你用银行卡去 ATM 机取钱,当你在执行取钱的动作过程中会触发一个名为 msg 的钩子函数,而这个 msg 钩子函数就会执行像你手机发送短信的动作。

即:在取钱动作成功发生的时候会触发发送短信的钩子函数。

hrun 中的 hook

和其他测试框架一样,httprunner 也拥有自己的 setupteardown,其通过 hook 的方式实现。

hook 分级

httprunner 中的 hook 分为 case 级别和 step 级别两种。

case 级别的 hook

实现 case 运行前后的 setupteardown

代码语言:javascript
复制
config:
    name: "demo testcase"
    variables:
        device_sn: "ABC"
        username: ${ENV(USERNAME)}
        password: ${ENV(PASSWORD)}
    base_url: "https://getman.cn/mock"
    setup_hooks:
        - ${hook_print(setup)}
    teardown_hooks:
        - ${hook_print(teardown)}

teststeps:
-
    name: demo step 1
    api: api/demo_api.yml
    variables:
        user_agent: 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36'
        device_sn: $device_sn
    extract:
        - token: content.name
    validate:
        - eq: ["status_code", 200]
-
    name: demo step 2
    api: api/demo_api2.yml
    variables:
        token: $token
    validate:
        - eq: [reason, OK]

debugtalk 定义 hook_print 函数

代码语言:javascript
复制
def hook_print(msg):
    print('This is:',msg)

测试执行控制台打印

step 级别的 hook

实现 step 运行前后的 setupteardown

代码语言:javascript
复制
config:
    name: "demo testcase"
    variables:
        device_sn: "ABC"
        username: ${ENV(USERNAME)}
        password: ${ENV(PASSWORD)}
    base_url: "https://getman.cn/mock"

teststeps:
-
    name: demo step 1
    api: api/demo_api.yml
    variables:
        user_agent: 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36'
        device_sn: $device_sn
    extract:
        - token: content.name
    validate:
        - eq: ["status_code", 200]
    setup_hooks:
        - ${hook_print(setup)}
    teardown_hooks:
        - ${hook_print(teardown)}
-
    name: demo step 2
    api: api/demo_api2.yml
    variables:
        token: $token
    validate:
        - eq: [reason, OK]

测试执行控制台打印

使用场景

环境登录

我们可以在测试前通过 hook 拿到环境的 token,这样我们在后面的测试中可以在直接使用。

预处理

假如我们需要在测试前进行一些预处理动作,比如配置初始化,创建测试项目和用户等都可以用 hook 实现。

后处理

我们可以通过 hook 在测试结束后对测试资源和垃圾数据等进行统一的处理。

结合 debugtalk,我们可以实现很多复杂的功能以支持我们的测试,甚至可以获取外部数据或者调用其他系统实现更加丰富的功能。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是 hook?
  • 举个 hook 栗子
  • hrun 中的 hook
    • hook 分级
      • case 级别的 hook
        • step 级别的 hook
        • 使用场景
          • 环境登录
            • 预处理
              • 后处理
              相关产品与服务
              短信
              腾讯云短信(Short Message Service,SMS)可为广大企业级用户提供稳定可靠,安全合规的短信触达服务。用户可快速接入,调用 API / SDK 或者通过控制台即可发送,支持发送验证码、通知类短信和营销短信。国内验证短信秒级触达,99%到达率;国际/港澳台短信覆盖全球200+国家/地区,全球多服务站点,稳定可靠。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档