HttpRunner-05-debugtalk

460 阅读2分钟

这是我参与8月更文挑战的第28天,活动详情查看:8月更文挑战

什么是 debugtalk

在前面的文章中我们已经介绍过 httprunner 的项目结构。debugtalk.py 是用来表示项目根目录的,同时我们也能在其中自定义一些方法供 apicase 使用。

debugtalk 用于 hook

详情查看:HttpRunner-03-hook

debugtalk 用于数据传递

前面的 HttpRunner-04-extract 中我们提到了 token 的传递和使用我们也可以通过 debugtalk 实现,这里我们就介绍一下具体的用法。

定义获取 token 的函数

debugtalk

def get_token():
    return 'xxxtokenxxx'

在 case 中引用 get_token

如下:在 step2 中的 variables 中以 token: ${get_token()}的方式进行函数的调用,同时将 token 赋值给变量 token

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]
    setup_hooks:
        - ${hook_print(setup)}
    teardown_hooks:
        - ${hook_print(teardown)}
-
    name: demo step 2
    api: api/demo_api2.yml
    variables:
        token: ${get_token()}
    validate:
        - eq: [reason, OK]

在测试报告中的体现

step2headers

可以看到通过 debugtalk 中的 get_token 函数获取到的 token 已经成功的传到了 step2 调用的 apiheaders 中。

小结

debugtalk 为测试人员预留了自定义的入口,你应该已经感觉到 HttpRunner 是一个有自己个性且开放的测试框架。对于常用的那些功能和模块做了封装,让你再使用的时候只需要维护一份 json/yaml 就可以。但是对于那些特殊的场景和需求,你可以通过 debugtalk 进行自定义,这样既能满足框架完整性,又能兼顾对接其他系统,不得不说这个设计真的很聪明。

HttpRunner 是一个优秀的国人开发的软件,按道理我们应当充分支持,实际我也是支持的。但是作为测试开发人员,我可能还是会拿它和 RFPytest 等做对比。因为 HttpRunner 的测试执行是通过 unittest 进行调度的,而且其要维护 json/yaml,对部分测试开发同学来说可能不是最优雅的方式,而且每个接口都需要进行封装,当然我们可以使用数据驱动,但是我们个对于每个接口的特殊性我们还得分类再做数据驱动,工作量相对较大。而对于纯代码的 Pytest 则相对较少,因为可以快速封装。RFPytest 的基础上更加易于使用和维护。正式因为如此,所以 HttpRunner 的使用率并不广泛,但不影响它是一款优秀框架的身份。

最后,建议有开发能力和资金的团队可以根据自己业务需求开发专属的测试框架,对于小团队,我们选择一款合适自己的开源测试框架即可。别忘了回馈和支持社区哦。

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