FunTester moco server框架架构图

之前画了两张框架的架构图:FunTester测试框架架构图初探FunTester测试项目架构图初探,反响不错,最近又对moco API产生了兴趣复习一下,顺便做了一个总结。

FunTester moco

其中大部分功能都是我在moco API的基础上封装而来的,简化了使用方法,增强了功能。少量是我自己做了补充,有兴趣的可以参考之前的文章:

FunTester moco框架架构图是对moco api的一个总结,一共分为三类功能:RequestMatcherResponseHandlerHttpServer

RequestMatcher

这个对象主要是负责匹配请求的,功能作用在当请求进来以后,通过拦截匹配的请求,再进行响应。

拦截分三类:URL匹配参数匹配组合匹配

URL匹配

  • urlOnly:URL全量匹配
  • urlStartsWith:URL前缀匹配
  • urlEndWith:URL后缀匹配
  • urlContain:URL包含匹配
  • urlMatcher:URL正则匹配

这里有个隐藏的请求方法匹配,也就是GETPOST一类,除此以外还提供了putdelete方法。

参数匹配

参数匹配有一个正交图:一方面判断参数的来源,一方面判断参数的属性。

参数来源

  • args:GET接口参数
  • params:POST接口JSON参数
  • form:POST接口表单参数
  • header:请求头参数
  • cookie:cookie参数

参数属性

  • exist:参数是否存在
  • eq:参数值是否与期望相等

组合匹配

这里提供了三个组合匹配的功能bothornot

  • both:同时满足所有条件
  • or:满足一种条件
  • not:不满足所有条件

ResponseHandler

RequestMatcher对请求进行拦截,接下来就由ResponseHandler对请求进行响应,响应划分成四种:基础响应功能响应设置响应拓展响应

基础响应

  • textRes:响应内容是文本
  • jsonRes:响应内容是JSON
  • obRes:响应内容是对象

这三种基本响应是接下来高级响应的基础。

功能响应

  • cycleRes:循环响应,将配置的多个响应内容当做一个环形链表,每一次请求都响应上一个请求响应的下一个内容。
  • sequenceRes:次序响应,将配置多个响应当做一个有序数组,依次响应,最终会停在最后一个响应上,接下来所有响应都是最后一个响应,类似于库存卖票。
  • random:随机响应,每次从配置的多个相应内容中随机返回一个内容响应。

设置响应

  • setStatus:设置HTTPcode码
  • setHeader:设置header
  • setCookie:设置cookie
  • setProxy:设置代理URL,会将代理URL响应内容返回给请求

拓展响应

  • delay:延迟响应
  • QPS:固定QPS
  • limit:限制请求频率
  • cycle:循环请求,改方法同功能响应但是可响应内容更多。

HttpServer

这个设置项比较少,除了设置请求方法以外,通盘有只有一类设置项MocoMonitor,包括portlogmoco API体系里都是MocoMonitor的具体实现类。

这里有两个需要注意:

  • proxy:设置代理,这个是跳转的,跟ResponseHandler里面的代理不一样。
  • mount:设置挂载,可以参考五行代码构建静态博客中的应用。

最后一个MocoRequestHit就是用来统计各个接口的命中次数,可以用来做接口请求次数的验证。

Runner比较特殊,用来启动服务和停止服务的,一个Runner可以启动多个HttpServer,中途可以灵活控制。


FunTester腾讯云年度作者Boss直聘签约作者GDevOps官方合作媒体,非著名测试开发,欢迎关注。