首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hoverfly真香

Hoverfly真香

作者头像
Antony
发布2020-12-03 14:54:22
1K0
发布2020-12-03 14:54:22
举报

API模拟工具(API mocking tools),或者所谓的服务虚拟化工具(service virtualization tools )是微服务测试中的必备基础设施。在测试圈中也有将其称为挡板。 目前来说,http(s)层面的模拟工具已经是一个百花齐放,供应过剩的局面了,国产的大家也可以关注Moco。 https://en.wikipedia.org/wiki/Comparison_of_API_simulation_tools https://www.guru99.com/service-virtualization-tools.html

这里主要安利一个亲测简单易用的工具-Hoverfly

微服务下的API Mock工具的使用场景:

1)创建2个微服务A和B,A将调用B完成某项工作 2)测试用例创建-使用API Mock工具将A调用B的请求/响应流量进行捕捉 3)测试用例执行-在B离线的情况下,运行上述测试用例,API Mock工具充当B的测试桩完成用例的正常运行。 这是最基本的API MoCK应用场景

自动切换捕捉和回放的Hoverfly

@HoverflySimulate(source = @Source(
value = simulation.json", type = SourceType.FILE),
    enableAutoCapture = true)
@ExtendWith(HoverflyExtension.class)
class CaptureIfFileNotPresent {
    // ...
}

这是Hoverfly-java提供的一个Capture or simulate案例。也是Hoverfly在琳琅满目的API Mock工具库凭借着这一点成功吸引到笔者的原因之一: 可以看到,整个过程只要在类上添加相关的Hoverfly注解进行配置,申明相关的文件以及是否启用自动捕捉的功能,就可以完成HTTP请求的捕捉、落成文件。这是首次测试用例首次执行时的场景。 而当需要再次执行时,由于该文件已经就绪,Hoverfly将启动回功能,通过捕捉请求,给测试套件提供外部服务的模拟返回。 整个过程无需手工编写额外的请求、响应文件,或者是编写类似

mock.start() //test mock.stop() 这样的脚手架代码来实现HTTP请求的捕捉,以及后期执行时再人工拆除。

如何引入

<dependency> <groupId>io.specto</groupId> <artifactId>hoverfly-java</artifactId> <version>0.13.0</version> <scope>test</scope> </dependency>

Hoverfly注意点

实际项目中有以下一些事项需要注意, 1)修改录制的请求响应文件,模糊匹配请求中的timer/token等内容(glob),以支持后续的调用

2)不同用例的相同请求返回不同的结果-分离用例到不同的文件(hoverfly只能做class的注解,不能注解在方法上)

3) Hoverfly在发现请求响应文件后,只使用该文件进行匹配,而不是去向实际的对端微服务发送请求。如果在一个测试类中存放多个测试用例,在用例开发过程中,需要分开进行录制,最后进行请求/响应文件内容的合并。由于新用例所需的请求内容未匹配到,因此用例会执行失败。所以用例需要逐条开发并merge到最终的测试类中。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软件测试那些事 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 微服务下的API Mock工具的使用场景:
  • 自动切换捕捉和回放的Hoverfly
    • 如何引入
      • Hoverfly注意点
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档