mcpField
T
test-data-generation

test-data-generation

github.com/aj-geddes测试与质量373498 次安装34 周前更新
代码仓库

关于 test-data-generation

用于为自动化测试和开发生成真实、一致测试数据的技能,涵盖可复用工厂、夹具、构建器及多样化场景,包括边界情况和关联数据。

主要功能

  1. 01可复用的数据工厂
  2. 02复杂对象构建器
  3. 03集成测试夹具
  4. 04真实且唯一的数据值
  5. 05边界与极端测试数据

适用场景

  1. 01创建集成测试夹具
  2. 02填充开发数据库
  3. 03生成关联测试记录
  4. 04测试边界值和异常输入

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/aj-geddes/useful-ai-prompts --skill test-data-generation

安装后在 Claude Code 中输入/test-data-generation确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
builder-pattern-for-complex-objects.md
factory-pattern-for-test-data.md
fixtures-for-integration-tests.md
realistic-data-generation.md
scripts/
scaffold-tests.sh
templates/
test-template.js

详细介绍

测试数据生成

目录

概述

测试数据生成可为自动化测试创建真实、一致且易于维护的测试数据。设计良好的测试数据可以减少测试的不稳定性、提升可读性,并更轻松地创建多样化的测试场景。

适用场景

  • 为集成测试创建测试夹具
  • 为开发数据库生成虚假数据
  • 构建具有复杂关系的测试数据
  • 为测试创建真实的用户输入
  • 为测试数据库填充数据
  • 生成边界情况和边界值
  • 构建可复用的测试数据工厂

快速开始

最简可运行示例:

// tests/factories/userFactory.js
const { faker } = require("@faker-js/faker");

class UserFactory {
  static build(overrides = {}) {
    return {
      id: faker.string.uuid(),
      email: faker.internet.email(),
      firstName: faker.person.firstName(),
      lastName: faker.person.lastName(),
      age: faker.number.int({ min: 18, max: 80 }),
      phone: faker.phone.number(),
      address: {
        street: faker.location.streetAddress(),
        city: faker.location.city(),
        state: faker.location.state(),
        zip: faker.location.zipCode(),
        country: "USA",
      },
      role: "user",
      isActive: true,
      createdAt: faker.date.past(),
      ...overrides,
    };
  }
// ... (see reference guides for full implementation)

参考指南

references/ 目录中的详细实现:

指南内容
测试数据工厂模式测试数据工厂模式
复杂对象的构建器模式复杂对象的构建器模式
集成测试的测试夹具集成测试的测试夹具
真实数据生成真实数据生成

最佳实践

✅ 应该
  • 使用 faker 库生成真实的数据
  • 为常见对象创建可复用的工厂
  • 让工厂支持灵活覆盖
  • 在需要时生成唯一值(电子邮件、ID)
  • 使用构建器构造复杂对象
  • 创建用于集成测试设置的测试夹具
  • 生成边界情况(空字符串、null、边界值)
  • 尽可能让测试数据保持确定性
❌ 不应该
  • 在多个位置硬编码测试数据
  • 在测试中使用生产数据
  • 为可复现的测试生成真正的随机数据
  • 创建过于复杂的工厂层级结构
  • 忽略数据关系和约束
  • 为简单测试生成庞大的数据集
  • 忘记清理生成的数据
  • 在所有测试中使用相同的测试数据

评论

支持 Markdown