test mock-05-mockserver mock-server/hoverfly/wiremock 对比

发布时间:2023年12月27日

拓展阅读

test 之 jmockit-01-overview

jmockit-01-test 之 jmockit 入门使用案例

mockito-01-overview mockito 简介及入门使用

PowerMock

Mock Server

ChaosBlade-01-测试混沌工程平台整体介绍

jvm-sandbox 入门简介

MockServer

MockServer 能够通过 Java、JavaScript 和 Ruby 编写的客户端轻松模拟与其它系统通过 HTTP 或 HTTPS 进行集成的过程。

MockServer 还包括一个代理,可以检查所有被代理的流量,包括加密的 SSL 流量,并支持端口转发、Web 代理(即 HTTP 代理)、HTTPS 隧道代理(使用 HTTP CONNECT)等功能。

Maven Central 包含以下 MockServer 构件:

  1. mockserver-netty - 一个模拟和记录请求与响应的 HTTP(S) Web 服务器
  2. mockserver-netty:shaded - mockserver-netty(如上所述),带有所有嵌入的依赖项
  3. mockserver-war - 一个可部署的 WAR 文件,用于模拟 HTTP(S) 响应(适用于任何 JEE Web 服务器)
  4. mockserver-proxy-war - 一个可部署的 WAR 文件,用于记录请求和响应(适用于任何 JEE Web 服务器)
  5. mockserver-maven-plugin - 一个 Maven 插件,用于使用 Maven 启动、停止和分叉 MockServer
  6. mockserver-client-java - 一个用于与服务器和代理进行通信的 Java 客户端

是什么?

MockServer 是一个可通过 HTTP 或 HTTPS 与其集成的任何系统进行交互的工具,可以用作:

  • 配置为为不同的请求返回特定的响应的模拟
  • 记录并可选择修改请求和响应的代理
  • 在同一时间对某些请求进行代理并对其他请求进行模拟

当 MockServer 收到请求时,它会将请求与已配置的活动期望进行匹配。

然后,如果找不到匹配项,它将根据需要代理请求;否则,将返回 404。

对于每个接收到的请求,会执行以下步骤:

  1. 查找匹配的期望并执行操作
  2. 如果没有匹配的期望,则代理请求
  3. 如果不是代理请求,则返回 404

期望定义了要采取的操作,例如,可以返回一个响应。

MockServer 支持以下操作:

  • 当请求匹配期望时,返回一个“模拟”响应

mock-server

mock-server/hoverfly/wiremock 对比表格

以下是 MockServer、Hoverfly 和 WireMock 之间的简要对比表格:

特性/功能MockServerHoverflyWireMock
支持的协议HTTP, HTTPSHTTP, HTTPS, TCPHTTP, HTTPS, TCP, SMTP, LDAP, gRPC, WebSockets, GraphQL, SNMP, Telnet, SSH, Netconf
动态生成响应
请求匹配功能强大的匹配功能,包括 URL、HTTP 方法、请求头、请求体等强大的匹配功能,支持 JSONPath、XPath 等强大的匹配功能,支持 URL、HTTP 方法、请求头、请求体等
动态端口分配
录制和回放
客户端支持Java、JavaScript、RubyJava、Go、JavaScriptJava、JavaScript、Ruby、Scala、Go、Groovy
官方文档MockServer 文档Hoverfly 文档WireMock 文档
GitHub 仓库MockServer GitHubHoverfly GitHubWireMock GitHub

MockServer 的主要实现原理:

  1. 请求匹配: 当 MockServer 接收到请求时,它会将请求与配置的期望进行匹配。匹配过程包括 URL、HTTP 方法、请求头、请求体等多个方面。如果找到匹配的期望,MockServer 将执行相应的操作。

  2. 期望配置: 用户可以通过 API 或配置文件定义期望,其中包含请求的匹配条件和对应的响应。期望配置中可以包含动态生成响应的逻辑,例如基于请求参数的模板生成。

  3. 动态生成响应: MockServer 允许用户通过模板定义动态生成的响应。这使得可以根据请求的具体内容动态生成响应,例如返回不同的数据或状态码。

  4. 录制和回放: MockServer 支持录制实际的请求和响应,并在后续测试中进行回放。这有助于模拟真实系统的交互,并能够在测试过程中保持一致性。

  5. 客户端支持: MockServer 提供了多语言的客户端支持,包括 Java、JavaScript、Ruby。这样,用户可以轻松地集成 MockServer 到不同的应用程序中。

  6. 动态端口分配: MockServer 支持动态端口分配,以避免端口冲突问题。这允许用户并行运行多个 MockServer 实例,而不必手动配置端口。

  7. 跨平台: MockServer 的设计具有跨平台性,可以在不同操作系统上运行。这使得用户可以在各种环境中使用 MockServer,无论是在开发、测试还是生产环境。

小结

mock-server 的模拟思想在实际对于常见的服务 mock 非常实用。

录制回放可以用来做很多事情,比如流量回放之类的。

后续可以考虑整合这个工具,实现一个 mock 服务平台。

在这里插入图片描述

文章来源:https://blog.csdn.net/ryo1060732496/article/details/135241182
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。