 快速驱动动态数据的完整教程)
e2e 参数化测试指南用 params 与 unique() 快速驱动动态数据的完整教程【免费下载链接】e2eNext generation e2e testing framework for web and mobile apps.项目地址: https://gitcode.com/GitHub_Trending/e2e6/e2ee2e是一个面向 Web 与移动端的下一代端到端E2E测试框架。它的核心能力之一就是让测试代码把数据通过params参数传递给测试步骤从而轻松实现参数化测试与动态数据驱动——同一套流程可以反复用不同的名字、邮箱、地址来跑既让用例更贴近真实场景也让回放缓存继续生效。本文用简单示例带你快速上手。为什么需要参数化测试写 E2E 测试时你常常希望注册一个新用户、填写一段地址、邀请一个邮箱……这些数据如果每次都硬编码测试既僵化又难复用。参数化让你把「变化的值」抽出来作为params传入测试逻辑保持稳定。一句话总结值由你的代码通过params传入而不是由模型生成。模型看到的是名称和用途真正的数据始终掌握在你手里。这一规则贯穿整个框架是 docs/reference/agent.mdx 里反复强调的安全边界。最简单的参数化填充 {占位符}在agent.act的目标goal里写一个{占位符}再用params给它赋值即可。下面是 docs/quickstart.mdx 中的入门示例await agent.act(sign up for a free trial as {name} with email {email}, { params: { name: Ada Lovelace, email: adaexample.test }, });{name}、{email}被替换成params里对应的值。params会填充目标中的占位符之后你可以用agent.assert或expect校验结果。数据驱动一份用例多组数据当你需要「同一流程、不同输入」时把数据抽成数组或对象遍历即可。这正是数据驱动测试的典型用法const accounts [ { name: Ada, email: adaexample.test }, { name: Grace, email: graceexample.test }, ]; for (const a of accounts) { await agent.act(invite {email} as an editor, { params: { email: a.email }, }); }移动端同理。docs/goals.mdx 里演示了用params打开某个设置页await agent.act(open {section} settings, { params: { section: General } });unique()每次运行值都不同缓存照样回放这是参数化里最关键的一环。如果你在params里直接塞一个时间戳或新邮箱每一次运行的值都不一样回放缓存replay cache会因为键不匹配而每次都失效。解决办法用unique()包裹这类值。运行器会把「当前值」替换进槽位回放时自动换上新的值模型看到的是原字符串缓存则只记录一个占位槽。相关实现见 packages/e2e/src/params.ts。import { unique } from e2e; const label Cabin ${Date.now().toString(36)}; await agent.act(add a new address labelled {label} at {line}, { params: { label: unique(label), line: 7 Pine Way, Bend }, });来自真实项目的 unique-cache.e2e.ts标签每次运行都不同且会出现在列表里——正是unique()的最佳场景。标记之后第二步运行能以零模型调用回放。⚠️使用原则来自 docs/cache.mdx流程会输入或校验的数据 → 用unique()如生成的邮箱、时间戳标签。会改变流程走向的选择如套餐名→ 保持普通params。若某个unique()值等于或包含另一个params值该步骤会通过但不记录param-collision下次用新值即可记录。密码与密钥Secret 参数更安全密码、API 密钥这类敏感值不要明文写进params。e2e 提供Secret模型只能看到它的名称与用途由运行器负责授权并填入真实值值会从模型输入和报告中自动脱敏。详见 docs/authentication.mdxconst member credentials.user(member); await agent.act(Sign in, { params: { username: member.username, password: member.password }, });API 密钥则用secrets.get()获取句柄后传入await agent.act(Connect Stripe with the given key, { params: { apiKey: secrets.get(stripe-key) }, });快速参考params 与回放缓存场景做法填充占位符params: { key: value }每次运行值都不同params: { key: unique(value) }密码 / 敏感值传入Secret模型只见名称API 密钥secrets.get(name)缓存命中要求测试名、目标、指令、params集合与 agent 都必须匹配。改动普通params或指令会导致缓存失效因此「会变的数据」务必交给unique()把「稳定的选择」留在普通params里。相关文件与延伸阅读参数实现源码packages/e2e/src/params.ts目标与参数化入门docs/goals.mdx回放缓存机制docs/cache.mdx认证与密钥安全docs/authentication.mdxact与params完整 APIdocs/reference/agent.mdx参数化缓存实例apps/web-benchmark/tests-agent/unique-cache.e2e.ts掌握params与unique()之后你就能用一份用例驱动多组动态数据在保持测试稳定的同时让回放缓存持续为你提速。【免费下载链接】e2eNext generation e2e testing framework for web and mobile apps.项目地址: https://gitcode.com/GitHub_Trending/e2e6/e2e创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考