HttpRunner-03-hook

简介: HttpRunner-03-hook

什么是 hook?


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


举个 hook 栗子


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


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


hrun 中的 hook


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


hook 分级


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


case 级别的 hook


实现 case 运行前后的 setupteardown


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 函数


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


测试执行控制台打印


网络异常,图片无法展示
|


step 级别的 hook


实现 step 运行前后的 setupteardown


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,我们可以实现很多复杂的功能以支持我们的测试,甚至可以获取外部数据或者调用其他系统实现更加丰富的功能。

感谢您的阅读,别忘了关注,点赞,评论,转发四连哟!

相关文章
|
17天前
|
测试技术 Go
golang-Mock对单元测试的作用
golang-Mock对单元测试的作用
32 0
|
17天前
|
关系型数据库 MySQL API
如何使用hook?
如何使用hook?
19 0
|
17天前
|
JSON 网络架构 数据格式
Easy-Mock 全解及其详细使用
Easy-Mock 全解及其详细使用
56 0
|
6月前
|
测试技术 Python
python 单元测试 mock patch
python 单元测试 mock patch
38 0
|
10月前
|
jenkins 测试技术 持续交付
Nestjs如何使用Jest测试代码
使用Jest测试代码的好处有很多 1. 简单易用:Jest提供了简洁的API和友好的命令行界面,使得编写和运行测试代码变得非常容易。它的断言语法清晰明了,减少了编写测试用例的工作量。 2. 自动化和集成:Jest能够自动运行你的测试用例,并提供了丰富的报告和统计信息。它还可以与持续集成工具(如Jenkins、Travis CI等)集成,使得测试过程更加自动化和可靠。 3. 快速和高效:Jest采用了并行执行测试用例的策略,可以更快地执行大量的测试代码。此外,Jest还具有智能的文件监视功能,只运行受影响的测试用例,从而提高了开发效率。
122 0
|
11月前
|
JSON 测试技术 数据格式
07-Httprunner-hook机制
07-Httprunner-hook机制
|
10月前
|
JavaScript 前端开发 Linux
Hook神器—Frida安装
Hook神器—Frida安装
|
测试技术 C++
Pytest框架运行常用参数解析
Pytest框架运行常用参数解析:-s:表示输出调试信息;-v:打印详细信息;-n:支持多线程或者分布式运行测试用例;–reruns NUM:失败用例重跑;-x:表示只要有一个测试用例报错则执行停止;–maxfail=2:表示出现2个用例报错则执行停止;-k:模糊匹配测试用例的部分字符串。。。
139 0
Pytest框架运行常用参数解析
Cypress 好用的用法
大家好,我是阿萨。之前学习了cypress的最基本的用法。可是有些同学还是反馈不会写cypress,怎么办? 今天就列举一些常见的cypress的写法。
220 0
|
测试技术 API
【pytest官方文档】解读- 插件开发之hooks 函数(钩子)
【pytest官方文档】解读- 插件开发之hooks 函数(钩子)
【pytest官方文档】解读- 插件开发之hooks 函数(钩子)

热门文章

最新文章