test-data-management

A guide for creating reliable, isolated test data with factory functions or builders instead of repeated hard-coded objects.

In plain words
What is it for?
Use it when tests need database records, request bodies, or responses, especially when many tests repeat fixtures or leave behind data.
Why use it?
It reduces fragile tests, prevents shared data from affecting test order, and keeps production or sensitive data out of test environments.

Skill for Claude CodeCodex

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/wade-devcode/awesome-coding-skills-cn/test-data-management
Any agent
npx skills add Wade-DevCode/awesome-coding-skills-cn --skill test-data-management
Clone the repo
git clone --depth 1 https://github.com/Wade-DevCode/awesome-coding-skills-cn

Made for: Claude Code, Codex.

Per session 22 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,089 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00022 $0.02089
Opus 5 $0.00011 $0.01045
Sonnet 5 $0.00004 $0.00418
Haiku 4.5 $0.00002 $0.00209

Measured 2d ago against content hash cbc594576ee7, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

test-data-management scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skills/test-data-management/SKILL.md · 160 lines

How it starts

The opening of the file, as written. The whole thing — 160 lines — stays where its author put it; the contents beside it link to each section on GitHub.

测试数据管理

何时用

  • 写测试时需要构造数据库记录、请求体、响应结构等测试输入。
  • 发现测试代码里散落着大量重复的硬编码数据对象。
  • 修改一个字段导致几十个测试挂掉——说明 fixture 没有合理分层。
  • 测试依赖生产数据库副本,或者 CI 跑完后数据库脏了影响下一次运行。

核心规则

1. 测试数据用工厂/builder 生成,默认值合理,按需覆盖

规则: 构造测试对象时使用工厂函数或 builder,提供合理默认值,测试只覆盖与本用例相关的字段。

为什么: AI 倾向于在每个测试里手写完整对象字面量——{ id: 1, name: "test", email: "[email protected]", role: "admin", createdAt: "...", ... }。当 User 新增一个必填字段时,几十个测试同时编译失败。更危险的是:字段值隐含了业务逻辑(如 role: "admin"),测试其实在测管理员权限,但名字叫"创建用户",后人完全看不出意图。

怎么做:

  • factory-boy(Python)、fishery(TS)或自定义 makeUser() 函数提供带默认值的工厂。
  • 测试只传入与本用例直接相关的字段,其余走默认值。
  • 工厂放在 tests/factories/ 统一管理,不散落在每个测试文件里。

2. 每个用例数据独立,跑完回滚/清理,不污染彼此

规则: 每条测试负责自己的数据生命周期:setup 时创建,teardown 时清理,绝不依赖其他测试留下的数据。

为什么: AI 常写出"测试 A 创建记录,测试 B 查询这条记录"的隐式链条。单独跑测试 B 时挂掉,随机改执行顺序后挂掉,并行跑时偶发失败。这种测试脆而难调试,问题一旦出现几乎无法定位。常见事故:一个 beforeAll 里的 seed 数据有 15 个测试依赖它,有人删了其中一条,全组测试随机红了两天才找到原因。

怎么做:

  • 优先使用数据库事务回滚(ROLLBACK)隔离每条测试。
  • 不能回滚时,在 afterEach 里显式 truncate 或 delete 测试数据。
  • 测试生成的记录用有辨识度的前缀(如 test_ + UUID),便于批量清理。

3. 不依赖生产数据;敏感数据用脱敏假数据

规则: 测试数据完全独立于生产环境构造,包含敏感信息(姓名、手机、身份证号)时一律使用虚假数据。

为什么: AI 有时会建议"从生产库导一份数据做测试 fixture",或者直接在测试里写真实看起来的数据 phone: "13812345678"。前者导致生产数据泄露到测试环境;后者若用了真实用户的手机号,万一测试误发短信则违规。此外生产数据会随业务变化,导致测试时效性问题。

怎么做:

  • 使用 faker / Faker.js 生成逼真但虚假的姓名、手机、邮箱。
  • 工厂默认值调用 faker,不用硬编码"张三"、"13800000000"。
  • CI 测试数据库与生产网络隔离,物理上无法访问生产数据。

4. 共享 fixture 谨慎,避免隐式耦合;能局部就不全局

规则: 只在多个测试真正共享同一不可变前提时才提取全局 fixture;可变数据、用例特有数据不共享。

为什么: AI 生成的测试套件里常有巨大的 conftest.pybeforeAll,里面有几十个全局 fixture。这些 fixture 与测试之间形成隐式耦合网:修改一个 fixture 影响范围不明,删一个字段导致无关测试失败。越"方便"的全局 fixture,长期维护成本越高。

怎么做:

  • 全局 fixture 只放真正不可变的基础数据(如配置、枚举表)。
  • 用例特有的前置数据放在 it / test 内部或最小作用域的 beforeEach
  • Python 中用 scope="function" 为默认,按需升级 scope,不反过来。

5. 数据与断言意图清晰,让别人看得懂这个用例在验证什么

规则: 测试数据的取值和断言的内容要能表达"这个用例在验证什么",不让读者猜。

为什么: AI 生成的测试数据常是完全随意的默认值——price: 100quantity: 2——但断言 expect(total).toBe(200),读者需要心算才能明白这是在测乘法。更糟的是测试名叫 "should calculate total",但数据里混了折扣逻辑,根本不是在测简单乘法。意图不清晰的测试在失败时无法快速判断是代码 bug 还是测试写错了。

Read the full file on GitHub · 160 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 160 lines · 22 tokens per session scan A cbc594576ee7

Subscribe to this mod's changes

test-data-management is a skill published in the GitHub repository Wade-DevCode/awesome-coding-skills-cn (6 stars, last pushed 2mo ago), licensed MIT. It adds 22 tokens to every session and 2,089 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

chinese-documentation

中文文档排版参考——中英文空格、全半角标点、术语保留、链接格式、中文文案排版指北约定。仅在用户显式 /chinese-documentation 时调用,不要根据上下文自动触发。.

jnMetaCode/superpowers-zh · 62 tokens

chinese-git-workflow

国内 Git 平台配置参考——Gitee、Coding.net、极狐 GitLab、CNB 的 SSH/HTTPS/凭据/CI 接入差异与镜像同步配置。仅在用户显式 /chinese-git-workflow 时调用,不要根据上下文自动触发。.

jnMetaCode/superpowers-zh · 69 tokens

brainstorming

在任何创造性工作之前必须使用此技能——创建功能、构建组件、添加功能或修改行为。在实现之前先探索用户意图、需求和设计。.

jnMetaCode/superpowers-zh · 40 tokens

chinese-code-review

中文 review 沟通参考——话术模板、分级标注(必须修复/建议修改/仅供参考)、国内团队常见反模式应对。仅在用户显式 /chinese-code-review 时调用,不要根据上下文自动触发。.

jnMetaCode/superpowers-zh · 62 tokens

chinese-commit-conventions

中文 commit 与 changelog 配置参考——Conventional Commits 中文适配、commitlint/husky/commitizen 中文模板、conventional-changelog 中文配置。仅在用户显式 /chinese-commit-conventions 时调用,不要根据上下文自动触发。.

jnMetaCode/superpowers-zh · 65 tokens

mcp-builder

MCP 服务器构建方法论 — 系统化构建生产级 MCP 工具,让 AI 助手连接外部能力.

jnMetaCode/superpowers-zh · 32 tokens