惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
腾讯CDC
博客园 - 聂微东
爱范儿
爱范儿
罗磊的独立博客
P
Proofpoint News Feed
博客园 - Franky
博客园 - 三生石上(FineUI控件)
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
酷 壳 – CoolShell
酷 壳 – CoolShell
Jina AI
Jina AI
Blog — PlanetScale
Blog — PlanetScale
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 司徒正美
美团技术团队
MongoDB | Blog
MongoDB | Blog
WordPress大学
WordPress大学
A
About on SuperTechFans
I
InfoQ
博客园_首页
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
H
Help Net Security
Microsoft Azure Blog
Microsoft Azure Blog
G
Google Developers Blog

美团技术团队

美团 · 技术团队 美团 · 技术团队 美团 · 技术团队 美团 · 技术团队 美团 · 技术团队 美团 · 技术团队 美团发布基于 N-gram 全新模型:嵌入扩展新范式,实现轻量化 MoE 高效进化 2025美团技术年货,「马」上到来 多维创新打造强泛化智能体模型,LongCat-Flash-Thinking-2601技术报告发布 美团 EvoCUA 刷新开源 SOTA,会用电脑还会持续进化的智能体! 美团 LongCat-Flash-Thinking-2601 发布,工具调用能力登顶开源 SOTA! KuiTest:基于大模型通识的 UI 交互遍历测试 AAAI 2026 | 美团技术团队学术论文精选 2025 | 美团技术团队热门技术文章汇总 美团 LongCat-Video-Avatar 正式发布,实现开源 SOTA 级拟真表现 大模型剪枝新范式:先浓缩,再剪枝——DenoiseRotator技术解读 LongCat 上线 AI 生图!精准高效,AI 创作不设限 美团发布 LongCat-Image 图像生成模型,编辑能力登顶开源 SOTA AI Coding与单元测试的协同进化:从验证到驱动 R-HORIZON:探索长程推理边界,复旦NLP&美团LongCat联合提出LRMs能力评测新框架 美团 LongCat 发布 AMO-Bench:突破 AIME 评测饱和困境,重新定义 LLM 数学上限 美团 LongCat Interaction 团队发布大模型交互系统技术报告 WOWService 美团 LongCat 团队发布全模态一站式评测基准 UNO-Bench 美团开源LongCat-Audio-Codec,高效语音编解码器助力实时交互落地 NeurIPS 2025 | 美团技术团队论文精选 LongCat-Flash-Omni正式发布并开源:开启全模态实时交互时代 美团 LongCat 团队发布 VitaBench:基于复杂生活场景的交互式 Agent 评测基准 LongCat-Video 视频生成模型正式发布,探索世界模型的第一步 ICCV 2025 | 美团论文精选及多模态推理竞赛冠军方法分享 从0到1建设美团数据库容量评估系统
Mock Server实践
闫帅 · 2015-10-19 · via 美团技术团队

背景

在美团服务端测试中,被测服务通常依赖于一系列的外部模块,被测服务与外部模块间通过REST API或是Thrift调用来进行通信。要对被测服务进行系统测试,一般做法是,部署好所有外部依赖模块,由被测服务直接调用。然而有时被调用模块尚未开发完成,或者调用返回不好构造,这将影响被测系统的测试进度。为此我们需要开发桩模块,用来模拟被调用模块的行为。最简单的方式是,对于每个外部模块依赖,都创建一套桩模块。然而这样的话,桩模块服务将非常零散,不便于管理。Mock Server为解决这些问题而生,其提供配置request及相应response方式来实现通用桩服务。本文将专门针对REST API来进行介绍Mock Server的整体结构及应用案例。

"mock server背景"

名词解释

  • Mock规则:定义REST API请求及相应模拟响应的一份描述。
  • Mock环境:根据请求来源IP来区分的Mock规则分组。Mock Server可以定义多套Mock环境,各套环境间相互隔离。同一个IP只能对应一个Mock环境,不同的IP可以对应同一个Mock环境。

整体结构

Mock Server由web配置页面Mock Admin及通用Mock Stub组成:Mock Admin提供了web UI配置页面,可以增加/删除请求来源IP到Mock环境的映射,可以对各套环境中的Mock规则进行CRUD操作;Mock Stub提供通用桩服务,对被测系统的各类REST API请求调用,返回预先定义好的模拟响应。为了提高桩服务的通吐,使得桩服务能在被测系统压力测试中得到好的表现,我们开启了5个桩服务,通过Nginx做负载均衡。Mock Server的整体结构如下图所示。

"mock server整体结构"

数据存储

  • 将请求来源IP到Mock环境名的映射存储到mock-env.conf中,mock-env.conf的每一行定义了一条映射,如: 192.168.3.68 闫帅的测试机环境 这条映射表明来源是192.168.3.68的请求,使用Mock环境名为闫帅的测试机环境的Mock规则。
  • 将配置的Mock规则存放到<对应Mock环境名>.xml中,下面部分展示了Mock规则的存储格式。
<configuration>
...
  <mock id="716add4f-33f7-49ac-abf3-fc617712ffea" name="test001" author="yanshuai">
    <request>
      <uri>/api/test/.*</uri>
      <method>GET|POST|PUT|DELETE</method>
      <parameters>
        <parameter name="name" value="test.*"/>
        ...
      </parameters>
      <headers>
        <header name="nb_deviceid" value="1E[0-9a-zA-Z]+"/>
        ...
      </headers>
    </request>
    <response delay="1000" real="false">
      <statusCode>200</statusCode>
      <format>application/json;charset=UTF-8</format>
      <customHeaders>
        ...
      </customHeaders>
      <body>{&quot;name&quot;:&quot;闫帅&quot;}</body>
    </response>
  </mock>
...
</configuration>

Mock Stub

当请求发送到Mock Stub时,Mock Stub会根据请求的来源IP找到对应的独立环境名,然后根据独立环境名获取所有预定义的Mock规则,遍历这些Mock规则,如果找到一条规则与接受到的请求匹配,那么返回预定义的模拟响应。如果找不到规则匹配,那么返回404错误。其中,规则匹配是根据请求中的uri/method/headers/parameters/body是否与Mock规则中定义的对应字段正则匹配来定的。

"mock stub工作原理"

Mock Admin

  • 打开Mock Admin配置页面,如果尚未映射来源IP地址到环境,则点击环境列表导航链接,进入环境列表页面,点击添加,输入源IP及环境名,点击确定按钮,实现源IP到所设环境的映射。
    "mock admin环境列表"