开源 API 集成测试工具 Hitchhiker v0.1.3 - 参数化请求 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
brookshi
V2EX    分享发现

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

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

    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     Solana     4506 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 01:05 PVG 09:05 LAX 17:05 JFK 20:05
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86