artillery-plugin-fake-data 使用指南:在 Artillery 测试脚本中直接生成 Faker 随机测试数据
性能测试接口测试CLI【免费下载链接】artilleryThe complete load testing platform. Everything you need for production-grade load tests. Serverless distributed. Load test with Playwright. Load test HTTP APIs, GraphQL, WebSocket, and more. Use any Node.js module.项目地址https://gitcode.com/gh_mirrors/ar/artillery点击查看免费下载导读artillery-plugin-fake-data是 Artillery 官方提供的实验性EXPERIMENTAL内置插件它的核心价值是让压测工程师不必编写任何自定义处理器processor代码直接在 YAML 测试脚本中调用 Faker 的随机数据生成函数从而轻松构造邮箱、姓名、UUID、密码、地址等多样化测试数据。本指南将围绕插件在 packages/artillery-plugin-fake-data/README.md 中说明的能力结合插件源码与测试用例完整讲解插件的安装启用方式、扁平化函数命名规则、函数选项配置方法、在beforeRequest/afterResponse钩子中的使用以及从旧版 falso 命名迁移的注意事项。读完本文你将能够在 Artillery 的 YAML 场景中直接注入随机数据并为字段配置 Faker 级的数据约束。一、插件定位把 Faker 数据生成能力搬进 YAML在负载测试脚本中请求体、查询参数、路径变量经常需要每次请求各不相同的数据。传统做法是在processor.js中手写生成逻辑再通过自定义函数引用。而 fake-data 插件把 Faker 的完整数据生成函数库直接映射为 Artillery 模板函数$开头的函数使你可以在 YAML 的 URL、请求头、请求体模板中直接使用$internetEmail()、$personFullName()等函数在beforeRequest/afterResponse等处理器钩子中复用同样的函数通过插件配置为每个函数传入 Faker 风格的选项对象如密码长度、数字范围控制生成结果的形态。从 packages/artillery/lib/builtin-packages.ts 可以看到artillery-plugin-fake-data与artillery-plugin-ensure、artillery-plugin-expect等一起被列为 Artillery 的内置包BUILTIN_PACKAGE_NAMES在 packages/artillery/lib/create-bom/built-in-plugins.ts 中也作为 BOM构建清单内置插件登记并在 packages/artillery/lib/cmds/run.ts 的官方插件识别列表中出现。也就是说使用官方发布的 Artillery 时该插件随包内置、开箱即用。二、启用插件与最小可用示例启用方式与其他 Artillery 插件一致在测试脚本的config.plugins中声明插件名无需额外配置即可获得全部能力。一个最小的 YAML 示例如下config: target: https://example.com plugins: fake-data: {} phases: - duration: 60 arrivalRate: 5 scenarios: - name: signup flow: - post: url: /users json: email: $internetEmail() name: $personFullName() password: $internetPassword()从插件源码 packages/artillery-plugin-fake-data/index.ts 可以看出插件配置同时支持两种读取位置script.config[fake-data]与script.config.plugins[fake-data]二者等价。对应测试 test/index.spec.js 验证了从config.fake-data读取配置时选项同样生效。插件在加载时会把一个名为fakeDataHandler的处理器注入到每个场景的beforeScenario钩子中index.ts并把该处理器挂到script.config.processor上index.ts处理器运行时遍历全部 Faker 函数将$函数名绑定进context.funcsindex.ts从而让 Artillery 模板引擎在请求构建阶段能够解析这些函数。测试 test/index.spec.js 断言了beforeScenario钩子的注入与处理器函数的挂载。三、扁平化命名规则从faker.internet.email()到$internetEmail()Faker 的函数按模块组织如faker.internet.email、faker.person.fullName。插件将函数名做**扁平化flatten**处理去掉模块分隔符并保留模块名前缀再统一以$前缀暴露faker.internet.email()→$internetEmail()faker.person.fullName()→$personFullName()faker.internet.password()→$internetPassword()命名规则在 index.ts 中实现${moduleName}${functionName[0].toUpperCase()}${functionName.slice(1)}即「模块名 首字母大写的函数名」。构建函数映射的buildFakerFunctionMapindex.ts有以下关键行为跳过辅助模块helpers、definitions、rawDefinitions这类不直接生成数据的模块不会暴露index.ts以下划线开头的私有成员同样被过滤沿原型链收集部分 Faker 模块的方法从父类继承例如dateBirthdate来自SimpleDateModule插件会沿原型链遍历以完整收集index.ts只支持单参数函数由于配置以单个对象参数传入函数签名参数个数大于 1 的函数会被跳过index.ts。测试 test/index.spec.js 断言暴露的函数数量超过 200 个且包含internetEmail、internetPassword、personFullName、stringUuid、numberInt、datatypeBoolean、locationCity、companyName、loremSentence、dateBirthdate、datePast等覆盖各模块的代表性函数。插件包依赖固定为faker-js/faker10.5.0见 package.json因此实际可用的函数集合以该版本为准。四、为函数配置 Faker 选项控制随机数据的形态插件配置对象中的每个键对应一个扁平化函数名值为 Faker 函数自身的选项对象。这样你可以对随机数据的范围、长度、格式做精细约束而不是拿到完全不可控的随机值。config: plugins: fake-data: internetPassword: length: 5 numberInt: min: 10 max: 10 personFullName: firstName: Ada lastName: Lovelace运行时插件若在配置中找到了对应函数的选项就把选项对象作为参数传给 Faker 函数index.tscontext.funcs[$${funcName}] () { if (pluginConfig[funcName]) { return fakerFunc(pluginConfig[funcName]); } return fakerFunc(); };对应测试 test/index.spec.js 验证了internetPassword: { length: 5 }生成的密码长度为 5、numberInt: { min: 10, max: 10 }恒等于 10。每个函数接受什么选项请查阅 Faker API 文档 中对应函数的定义——选项形状与 Faker 原生一致。此外配置校验由 packages/types/schema/plugins/fake-data.js 中的FakeDataPluginJoi 模式完成它会依据getFakerFunctions()与getDeprecatedAliases()index.ts动态构建每个函数与别名对应的Joi.object()校验项并对未知键报错.unknown(false)防止配置拼写错误被静默忽略。类型层面fake-data的配置类型FakeDataPluginConfig在 packages/artillery/types.d.ts 中被定义为函数名到选项的映射Recordstring, unknown并注册进PluginsConfigpackages/artillery/types.d.ts。五、在 beforeRequest / afterResponse 处理器中使用插件注入的$函数不仅限于 YAML 模板同样可以在beforeRequest、afterResponse等处理器钩子processor中调用。由于插件把全部函数挂在context.funcs上而处理器运行时上下文共享这一对象你可以在处理器中这样使用// processor.js module.exports { beforeRequest(requestParams, context, ee, next) { // 为每个请求生成不同的随机邮箱与用户名 requestParams.body { email: context.funcs.$internetEmail(), username: context.funcs.$internetUsername() }; next(); } };YAML 侧在场景中声明处理器与钩子config: processor: ./processor.js plugins: fake-data: {} scenarios: - name: dynamic-body beforeRequest: beforeRequest flow: - post: url: /login需要注意的是$函数本身是无参数调用如需带选项的生成结果请通过插件配置见上文第四节声明处理器中直接调用即可得到符合约束的值。六、从 falso 迁移旧别名、新选项形状与一次性警告早期版本的插件使用 falso 库命名风格为$rand*如$randEmail、$randFullName。当前版本做了如下迁移处理别名保留但已废弃最常用的 falso 风格名称如$randEmail、$randFullName、$randPassword仍可作为废弃别名deprecated aliases工作但将在未来版本中移除。废弃别名的完整映射定义在 index.ts例如randEmail → internetEmail、randPassword → internetPassword、randUuid → stringUuid、randPhoneNumber → phoneNumber、randCity → locationCity、randZipCode → locationZipCode、randNumber → numberInt、randBoolean → datatypeBoolean、randWord → loremWord、randProductName → commerceProductName等约 30 个。调用别名会触发一次性警告首次使用某个别名时插件会通过console.warn输出一条提示建议改用对应 Faker 函数名index.ts。测试 test/index.spec.js 验证了每个别名恰好警告一次重复调用不再警告。配置选项形状改为 Faker 风格函数配置选项现在使用 Faker 的选项形状例如internetPassword: { length: 5 }取代了旧的randPassword: { size: 5 }。并且选项必须写在Faker 函数名如internetPassword下而不是写在别名如randPassword下——DEPRECATED_ALIASES中明确注释“配置选项不会被翻译必须以 Faker 选项形状、写在 Faker 函数名下”index.ts。迁移建议将脚本中所有$rand*别名替换为对应的$ Faker 扁平名并把选项从 falso 形状改写为 Faker 形状。完整的逐项迁移对照表见官方插件文档。七、运行测试与验证插件自带基于node:test的单元测试覆盖了函数暴露、钩子注入、选项传递、别名警告与配置读取位置等核心行为。在 packages/artillery-plugin-fake-data 目录下执行npm test对应package.json中test脚本node --test --test-timeout120000 test/*.spec.js见 package.json。这些测试同时也是一份很好的行为契约文档test/index.spec.js断言暴露函数数量 200 且关键函数存在test/index.spec.js断言$internetEmail()生成合法邮箱、$stringUuid()生成合法 UUIDtest/index.spec.js断言配置选项生效test/index.spec.js断言别名废弃警告逻辑。在真实压测中使用时可以在任意 Artillery 测试脚本artillery run script.yml中启用本插件。由于插件处于EXPERIMENTAL阶段且持续活跃开发中若发现异常或想提出变更可在 Artillery 仓库提交 issue 或发起讨论。八、常见问题速查$函数在 YAML 中不生效确认config.plugins中已声明fake-data且插件配置项键名与扁平化函数名完全一致如internetPassword不要写成 Faker 的模块路径如internet.password。想让密码固定长度在插件配置中写internetPassword: { length: 5 }选项形状与 Faker API 一致。旧脚本还在用$randEmail可用但会打印一次性废弃警告请尽快迁移到$internetEmail()并将randPassword: { size: 5 }改写为internetPassword: { length: 5 }。未知的函数名或选项会被忽略吗不会。配置会经过 packages/types/schema/plugins/fake-data.js 的 Joi 校验未知键会被拒绝帮助你在运行前发现拼写错误。能在处理器钩子里用这些函数吗可以。全部$函数均挂在context.funcs上beforeRequest/afterResponse等钩子中可直接调用无需额外 import Faker。九、许可证与资源本插件采用 MPL 2.0 许可证见 LICENSE.txt。更多信息、迁移对照表与完整参考见官方插件文档发现问题请在 Artillery 仓库提交 issue特性建议可通过 Discussions 讨论。需要自研脚本时也可以直接阅读插件源码 index.ts 与测试 test/index.spec.js 作为实现参考。赞分享性能测试接口测试CLI【免费下载链接】artilleryThe complete load testing platform. Everything you need for production-grade load tests. Serverless distributed. Load test with Playwright. Load test HTTP APIs, GraphQL, WebSocket, and more. Use any Node.js module.项目地址https://gitcode.com/gh_mirrors/ar/artillery点击查看免费下载相关推荐Caddy服务器ECH功能架构深度解析加密客户端问候实现机制与隐私保护方案设计Caddy服务器ECH功能架构深度解析加密客户端问候实现机制与隐私保护方案设计 在当今网络监控日益严密的数字环境中TLS握手过程中的SNI明文泄露已成为We后端API网关网络使用 Artillery expect 插件在单一测试脚本中同时执行负载测试与功能测试使用 Artillery expect 插件在单一测试脚本中同时执行负载测试与功能测试 本文基于 Artillery 官方示例 functional testi性能测试接口测试CLIVUnit测试用例设计指南从简单断言到复杂场景验证VUnit测试用例设计指南从简单断言到复杂场景验证 VUnit是一个功能强大的VHDL/SystemVerilog单元测试框架它提供了完整的测试用例设计与执上一篇终极Enigma Virtual Box解包指南evbunpack工具完全掌握下一篇AutoRaise彻底改变macOS窗口管理的鼠标悬停自动聚焦神器创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

DeepSeek-OCR 论文复现全链路:从 DeepEncoder 到 MoE 解码的代码落地与 TaoToken 配置

DeepSeek-OCR 论文复现全链路:从 DeepEncoder 到 MoE 解码的代码落地与 TaoToken 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 12:46:20 阅读更多 →
yml/yaml 文件报错 found character that cannot start any token:用 TaoToken 统一 Key 排查配置骨架

yml/yaml 文件报错 found character that cannot start any token:用 TaoToken 统一 Key 排查配置骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 12:46:20 阅读更多 →
WPScan 动态版本识别实战:从 Crosswinds Blocks 插件 changelog.md 看 BodyPattern 查找器的工作原理

WPScan 动态版本识别实战:从 Crosswinds Blocks 插件 changelog.md 看 BodyPattern 查找器的工作原理

网络安全漏洞扫描渗透测试应用安全CLI 【免费下载链接】wpscan WPScan WordPress security scanner. Written for security professionals and blog maintainers to test the security of their WordPress websites. Contact us via contactwpscan.com 项目地址: ht…

2026/9/25 12:46:20 阅读更多 →

最新新闻

Atlas 300V 24G推理卡部署YOLOv5全流程实战指南

Atlas 300V 24G推理卡部署YOLOv5全流程实战指南

最近后台连续收到好几条差不多的提问:Atlas 300V 24G是不是运算加速卡啊,能不能拿来部署YOLO?问的人多了,我就知道这不是个例,而是大家在采购清单、项目验收文件、二手平台里看到“Atlas 300V 24G”这个型号之后的普遍…

2026/9/25 13:31:51 阅读更多 →
2025年AI工具出海:小众赛道爆品策略与实操指南

2025年AI工具出海:小众赛道爆品策略与实操指南

1. 为什么“小众赛道”反而更容易跑出AI工具爆品1.1 从“大而全”到“窄而深”的转向2025年做AI工具,如果还想着做一个“什么都能干”的通用助手,基本等于在红海里跟巨头正面硬刚。我观察了最近一年冒出来的几十款有真实营收的AI产品,发现一个…

2026/9/25 13:31:51 阅读更多 →
Atlas 300V 24G推理加速卡详解:从CANN环境到YOLO部署全流程

Atlas 300V 24G推理加速卡详解:从CANN环境到YOLO部署全流程

“atlas部署yolo”和“atlas 300v 24g是运算加速卡吗”这两个搜索词一起出现在热搜榜,我一点都不意外。前者是想在Atlas上跑目标检测的开发者,后者多半是正在纠结要不要下单买卡的选型用户。Atlas这个产品线在AI圈子里出现的频率越来越高,但同…

2026/9/25 13:31:51 阅读更多 →
Atlas 300V 24G加速卡详解:从模型转换到YOLO推理全流程实战

Atlas 300V 24G加速卡详解:从模型转换到YOLO推理全流程实战

最近后台被问得最多的一句话是:“atlas 300v 24g 是运算加速卡吗?”紧接着往往会跟一条:“我打算在atlas上部署yolo,流程到底怎么走?”这两个问题其实是一件事的两面。很多人第一次接触华为昇腾Atlas平台,都…

2026/9/25 13:31:51 阅读更多 →
open-code-review:从流程到工具的代码评审最佳实践

open-code-review:从流程到工具的代码评审最佳实践

我在两年前把团队内部的代码评审机制重新整理了一遍,仓库名就叫open-code-review。这个名字起得很直白,目标是想让代码评审从“两个人关起门来看一眼”变成“所有人都能看见、都能评论、事后还能复盘”的开放过程。当时团队正处在从八个人扩张到三十个人…

2026/9/25 13:31:51 阅读更多 →
miniSQL实战指南:手写数据库内核的四大模块与避坑方法

miniSQL实战指南:手写数据库内核的四大模块与避坑方法

简介:本资源是浙江大学数据库设计课程期末大作业成果——miniSQL轻量级数据库管理系统,面向数据库原理学习者、C/C系统编程初学者及课程实践者,旨在通过完整可运行的DBMS实例,深入理解SQL解析、事务处理、B树索引、缓冲区管理等核…

2026/9/25 13:30:51 阅读更多 →

日新闻

AI元人文:从工具使用到思维重构的深度探索

AI元人文:从工具使用到思维重构的深度探索

最近半年我一直在琢磨一件事:AI元人文到底是什么?说白了,就是“用元视角重新审视人与AI的关系”,也在“探索AI如何反向逼着我们发现自己的思考边界”。标题里的“元探索”,在我看就是一层套一层的追问——当你用AI解决…

2026/9/25 0:00:41 阅读更多 →
Python+CNN车牌识别实战:从数据预处理到模型训练与部署

Python+CNN车牌识别实战:从数据预处理到模型训练与部署

简介:基于Python与卷积神经网络的车牌识别项目,面向计算机视觉初学者及智能交通开发者,目标是帮助用户掌握从数据预处理、模型构建到实际部署的完整流程。压缩包共25个文件,包含jpg/png图像样本、py训练脚本、md说明文档、dat数据…

2026/9/25 0:00:41 阅读更多 →
Vim基础操作全攻略:保存退出、模式切换与高频命令实战

Vim基础操作全攻略:保存退出、模式切换与高频命令实战

1. 项目概述1.1 核心需求解析今天聊聊Vim。写这个题目的原因是:几乎每个后端开发者、运维人员、数据工程师某天都会遇到一个场景——深夜加班,服务器登录界面只有黑底白字,编辑器只有vi/vim,你必须在五分钟内完成一次配置修改并保…

2026/9/25 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/25 11:15:26 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →