V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
brookshi
V2EX  ›  分享发现

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

  •  
  •   brookshi · 2017-09-25 07:55:06 +08:00 · 1574 次点击
    这是一个创建于 2612 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    在线体验: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]
    }
    

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

    下图就展示了参数化请求的使用方式,可变的三个参数namepwdage

    name有两个值: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 支持下,谢谢。

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1139 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:57 · PVG 02:57 · LAX 10:57 · JFK 13:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.