开源API集成测试工具 Hitchhiker v0.1.3 - 参数化请求

Hitchhiker 是一款开源的 Restful Api 集成测试工具,你可以轻松部署到本地,和你的team成员一起管理Api。

详细介绍请看: https://cloud.tencent.com/developer/article/1012689

在线体验:http://www.hitchhiker-api.com/ , 可以用 try without login 来免登录使用。

这次版本主要增加一个重磅功能 - 参数化请求:

参数化请求

什么是参数化请求,就是把一个Api里可变的点提取出来,参数化,这样就可以用一个Case覆盖到所有可变请求。

参考下图(比较大,可能会比较慢出来):parameters就是用来构建参数化请求的,请求通常有很多参数,比如query string, body里的变化点等,这些参数可能会有不止一个值,每个都要覆盖的话需要写很多request。

举个例子:比如一个request有三个可变的参数A, B, C,每个参数又分别有3个值,A的1,2,3, B的4,5,6, C的7,8,9,这样随机组合下来会有3*3*3=27个request:

147 148 148 157 158 159 167 168 169
247 248 248 257 258 259 267 268 269
347 348 348 357 358 359 367 368 369

很麻烦有没有,如果再多两个参数呢,轻松过百了呀,想想都头大,但其实它们之间只是一点不同,何必要费这么大劲呢,参数化请求可以帮你做这个事,只需要把可变的参数写在parameter里面,Hitchhiker会自动构建出所有request。

parameters有两种组合方式,一种是所有组合Many to Many,另一种是一对一组合One to One,上面生个27个request的就是ManytoMany,如果用一对一组合的话就只有3个,分别是:147, 258, 369

Parameters的格式是一个json对象,对象的下一层是变量以及它的值:数组。看个例子:

{
    "A": [1, 2, 3],
    "B": [3, 4, 5], 
    "C": [7, 8, 9]
}

使用的方式同变量一样,用{{}}包起来。

下图就展示了参数化请求的使用方式,可变的三个参数namepwdagename有两个值:tomjerrypwd有两个值:123456age也是两个值:2018,使用OnetoOne时会生成两个请求:name:tom, pwd:123, age:20name:jerry, pwd:456, age:18,一一对应的,可以分别请求,也可以一起请求。 如果选了ManytoMany就会有8个请求,这里就不一一列举出来。 参数化请求的request保存后左边对应的item里会显示出请求的真正个数,如图中的8。 参数化请求跑schedule一样没问题,会自动拆分开跑和显示。

大图:右键新标签打开图片

处理对比数据

Hitchhiker的一个重要功能就是可以对比不同环境的返回数据,之前是直接对比response,但实际上往往想要对比的是其中一部分或去掉可变部分,考虑一种情况,返回的response里带有一个当前时间,也就表示每次返回的数据都是不同的,因为时间肯定不一样,这样就影响了对比结果,但是这个时间没什么对比意义,所以我们需要在对比前把它去掉,这时可以用这个功能了。

具体用法:在test里用js处理responseObj,然后用$export$(data)函数导出处理后的数据(data就是处理后的数据),然后跑schedule时就会用导出的数据进行对比了。

默认Headers

之前有加一个header收藏功能,方便使用一些常用的header,但是有些server会校验一些请求头,比如Accept,UserAgent等,这个是每个请求都需要带的,每个request都写也有些麻烦,现在可以配置一些默认header,这些header可以在根目录下的appconfig.json里配置,默认定义的是这些:

"defaultHeaders": [
    "Accept:*/*",
    "User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36",
    "Cache-Control:no-cache"
]

可以根据需要自行修改。

后续计划

本来的计划是两周一版本,其中一周做小版本的新功能和改bug,另一周做大版本的压力测试。不过这次参数化请求比预想的要麻烦些,上面两周时间基本都花这上面了,压力测试这块就没进展,下两周除了改bug外就全力做压力测试这块,希望国庆过后能做到差不多。

Github: https://github.com/brookshi/Hitchhiker, 觉得不错的话麻烦 Star 支持下,谢谢。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏liuchengxu

可移植的 Makefile 教程

在我写 Makefile 的头 10 年里,我养成了一个非常不好的习惯 -- 完全严格使用 GNU Make 的扩展名。过去我并不知道, GNU Make 与...

771
来自专栏小灰灰

Quick-Task 动态脚本支持框架之使用介绍篇

文章链接:https://liuyueyi.github.io/hexblog/2018/07/19/180719-Quick-Task-动态脚本支持框架之使用...

1042
来自专栏微信终端开发团队的专栏

MMKV for Android 多进程设计与实现

MMKV 是基于 mmap 内存映射的移动端通用 key-value 组件,底层序列化/反序列化使用 protobuf 实现,性能高,稳定性强。从 2015 ...

2101
来自专栏生信技能树

在ubuntu使用apt install的fastqc是有bug的

所以我就去了我的生物信息学常见1000个软件的安装代码:https://www.jianshu.com/p/ae28e8e3e9f5 找到了fastqc软件下载...

802
来自专栏阿杜的世界

Java Web技术经验总结(一)

862
来自专栏贾鹏辉的技术专栏@CrazyCodeBoy

Android Studio 2.2新特性:新布局、Firebase、OpenJDK以及Java 8

尊重版权,未经授权不得转载 本文出自:贾鹏辉的技术博客(http://www.devio.org) 前几天,收到了Android Studio 2.2的...

3264
来自专栏Java架构沉思录

优雅实现延时任务之Redis篇

延时任务,顾名思义,就是延迟一段时间后才执行的任务。举个例子,假设我们有个发布资讯的功能,运营需要在每天早上7点准时发布资讯,但是早上7点大家都还没上班,这个时...

1253
来自专栏杂烩

程序eclipse下run和debug不一致问题

    公司核心代码,这里不上了,主要将如何发现问题、如何排查问题和如何解决问题。

592
来自专栏架构之美

五分钟学会Elasticsearch查询代理设计

1284
来自专栏微信公众号:Java团长

Java面试中问及Hibernate与MyBatis的对比,在这里做一下总结

我是一名java开发人员,hibernate以及mybatis都有过学习,在java面试中也被提及问道过,在项目实践中也应用过,现在对hibernate和myb...

932

扫码关注云+社区