什么是 debugtalk
在前面的文章中我们已经介绍过 httprunner
的项目结构。debugtalk.py
是用来表示项目根目录的,同时我们也能在其中自定义一些方法供 api
和 case
使用。
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]
在测试报告中的体现
step2
的 headers
可以看到通过 debugtalk
中的 get_token
函数获取到的 token
已经成功的传到了 step2
调用的 api
的 headers
中。
小结
debugtalk
为测试人员预留了自定义的入口,你应该已经感觉到 HttpRunner
是一个有自己个性且开放的测试框架。对于常用的那些功能和模块做了封装,让你再使用的时候只需要维护一份 json/yaml
就可以。但是对于那些特殊的场景和需求,你可以通过 debugtalk
进行自定义,这样既能满足框架完整性,又能兼顾对接其他系统,不得不说这个设计真的很聪明。
HttpRunner
是一个优秀的国人开发的软件,按道理我们应当充分支持,实际我也是支持的。但是作为测试开发人员,我可能还是会拿它和 RF
,Pytest
等做对比。因为 HttpRunner
的测试执行是通过 unittest
进行调度的,而且其要维护 json/yaml
,对部分测试开发同学来说可能不是最优雅的方式,而且每个接口都需要进行封装,当然我们可以使用数据驱动,但是我们个对于每个接口的特殊性我们还得分类再做数据驱动,工作量相对较大。而对于纯代码的 Pytest
则相对较少,因为可以快速封装。RF
在 Pytest
的基础上更加易于使用和维护。正式因为如此,所以 HttpRunner
的使用率并不广泛,但不影响它是一款优秀框架的身份。
最后,建议有开发能力和资金的团队可以根据自己业务需求开发专属的测试框架,对于小团队,我们选择一款合适自己的开源测试框架即可。别忘了回馈和支持社区哦。
评论区