首页/新闻资讯/正文详情

artillery-plugin-fake-data 使用指南:在 Artillery 测试脚本中直接生成 Faker 随机测试数据

发布时间:2026/9/25 12:45:49 来源:云帆数科 栏目:资讯中心
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),仅供参考

相关推荐

从零基础到护网值守:网络安全学习路线与实战能力指南
从零基础到护网值守:网络安全学习路线与实战能力指南

计算机网络安全这个方向,这几年的热度一直都在往上走,尤其是到了护网行动相关的招聘季,经常能看到各种高薪岗位挂在社区里。但作为一个带过不少实习生、也参与过多次安全值守的人,我得说句实在话:多数刚入行的大学生&a… · 2026/9/25 12:45:30

昇腾Atlas 300V部署YOLO实战:从ONNX转换到推理调优
昇腾Atlas 300V部署YOLO实战:从ONNX转换到推理调优

1. Atlas到底是个什么东西:先说清楚它是不是运算加速卡先给结论:Atlas不只是一张加速卡,它是一整套AI推理平台。针对热搜里那个问法,华为昇腾(Ascend)的Atlas系列里面,确实有一个纯推理加速卡产… · 2026/9/25 12:45:30

sqli-labs Less-24二次注入实战:从卡关到彻底理解存储型注入
sqli-labs Less-24二次注入实战:从卡关到彻底理解存储型注入

sqli-labs 刷到 Less-24 的时候,很多人会突然卡住。前面那些关卡只要在 URL 里加个单引号、改个参数,页面就会原形毕露;但 Less-24 打开就是一个普通的登录页,输入admin、1 or 11这些经典 payload,页面纹丝不动。这时候… · 2026/9/25 12:45:24

代码高亮库prettify实战指南:三件套用法、动态渲染与避坑排查
代码高亮库prettify实战指南:三件套用法、动态渲染与避坑排查

简介:网页中展示源代码时常因缺乏语法高亮而难以阅读,针对这一需求,Prettify代码高亮资源包提供了一套基于CSS与JavaScript的完整方案,面向初中级前端开发者、技术博主及文档编写者。压缩包共含三个文件,以一个CSS样式… · 2026/9/25 13:18:18

Gemini 2.5 Flash Lite 轻量化智能应用实战:TaoToken 统一 Key 接入与 config.toml 配置骨架
Gemini 2.5 Flash Lite 轻量化智能应用实战:TaoToken 统一 Key 接入与 config.toml 配置骨架

/* 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 13:18:18

Discuz! X3.5安装克米模板3.5:从解压到DIY导入避坑指南
Discuz! X3.5安装克米模板3.5:从解压到DIY导入避坑指南

简介:DZ论坛作为国内应用广泛的社区系统,搭配克米模板3.5版本可大幅提升站点的视觉表现与交互能力。该资源面向论坛站长、模板开发者和社区运营人员,整合了完整的模板程序与配套教程,可帮助非技术背景用户快速完成论坛界面升级和功… · 2026/9/25 13:18:12

学校教学资源库共享网络解决方案:校园优质资源库共享全光网支撑与区域数据中心构建
学校教学资源库共享网络解决方案:校园优质资源库共享全光网支撑与区域数据中心构建

结论:构建教育信息化资源库全光网解决方案,依托一张光网的大带宽能力,可实现精品课例与课件的高效汇聚、跨校共享与资源沉淀增值,并打破数据孤岛形成区域数据中心。一、区域级资源库:汇聚精品课例与课件,实… · 2026/9/25 13:18:12

Dreamweaver CS6案例素材使用指南:站点定义、模板与CSS换肤实战
Dreamweaver CS6案例素材使用指南:站点定义、模板与CSS换肤实战

简介:面向网页设计入门与进阶学习者,这份压缩包收录了《网页设计与制作——Dreamweaver CS6标准教程(第二版)》的完整配套案例素材,适合结合教材章节系统自学或课堂教学使用。素材以图像、动画、音视频等多媒体元素为基… · 2026/9/25 13:18:12

Claude Code 配置 settings.json:接入 TaoToken 统一 Key 与模型权限免校验
Claude Code 配置 settings.json:接入 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 13:18:12

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* 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 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* 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 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* 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 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码