| name | wps-data-faker |
| description | 模拟数据生成。需要测试数据?一键生成逼真的中国式假数据:张伟、138xxxx1234、
身份证号(含校验位)、北京市朝阳区xx路。填充模板、测试系统、做演示文档都好用。
用于帮助用户生成测试数据。当用户提到测试数据、假数据、模拟数据时触发。
Generates realistic Chinese test data - names, phones, IDs, addresses.
|
| license | MIT |
| user-invocable | true |
| argument-hint | [字段列表] [数量] |
| allowed-tools | Read, Grep, Glob, Bash, Write, Edit |
| metadata | {"author":"BWKYD","title":"模拟数据生成","description_zh":"生成中国式模拟数据,包括姓名、手机号、身份证、地址等","tags":["测试数据","模拟","假数据","Excel","WPS"],"version":"1.0.1","license":"MIT"} |
测试数据生成器
指定字段 → 生成逼真的中国式测试数据。填充模板、测试系统的利器。
再也不用手动编造"张三李四王五"了。
When to Use
- 需要测试数据填充Excel/表格
- 文档模板需要示例数据
- 系统测试需要批量数据
- 演示文档需要逼真样例
- 用户说"帮我造点测试数据""生成假数据"
When NOT to Use
- 真实数据清洗 → 使用
wps-data-clean
- 数据分析 → 使用
wps-pivot
支持的字段类型
| 字段 | 示例 | 说明 |
|---|
| 姓名 | 张伟、李芳 | 常见姓+名组合 |
| 性别 | 男、女 | 与姓名匹配 |
| 年龄 | 25-55 | 可指定范围 |
| 手机号 | 138xxxx1234 | 合规号段 |
| 身份证号 | 110105199001011234 | 含校验位 |
| 邮箱 | zhangwei@qq.com | 常见邮箱后缀 |
| 地址 | 北京市朝阳区xx路xx号 | 真实地名 |
| 公司名 | XX科技有限公司 | 行业+类型组合 |
| 部门 | 技术部、销售部 | 常见部门 |
| 职位 | 经理、工程师 | 与部门匹配 |
| 日期 | 2025-01-15 | 可指定范围 |
| 金额 | 1,234.56 | 可指定范围 |
| 工号 | EMP001 | 自定义前缀 |
工作流程
Step 1: 确认数据需求
- 需要哪些字段
- 生成多少条
- 输出格式(Excel/CSV)
- 特殊约束(如年龄范围、地区限定)
Step 2: 生成数据
import random
import string
from datetime import datetime, timedelta
from openpyxl import Workbook
from openpyxl.styles import Font, Alignment, PatternFill
import os
class ChineseFaker:
"""中国式测试数据生成器"""
SURNAMES = '赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜'
MALE_NAMES = ['伟', '强', '磊', '军', '勇', '杰', '涛', '明', '超', '华',
'志强', '建国', '建华', '国强', '文彬', '浩然', '宇航', '子轩']
FEMALE_NAMES = ['芳', '娜', '敏', '静', '丽', '婷', '雪', '慧', '莹', '倩',
'秀英', '玉兰', '淑芬', '美玲', '雨萱', '欣怡', '诗涵']
CITIES = ['北京市', '上海市', '广州市', '深圳市', '杭州市', '成都市',
, , , , , ]
DISTRICTS = [, , , , ,
, , , , ]
COMPANIES = [, , , , , , ,
, , ]
COMPANY_SUFFIX = [, , , ]
DEPARTMENTS = [, , , , ,
, , , , ]
POSITIONS = {
: [, , , , ],
: [, , , ],
: [, , , ],
}
PHONE_PREFIXES = [,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,]
():
g = gender random.choice([, ])
surname = random.choice((.SURNAMES))
given = random.choice(.MALE_NAMES g == .FEMALE_NAMES)
surname + given, g
():
random.choice(.PHONE_PREFIXES) + .join(
random.choices(, k=))
():
area = random.choice([, , , ,
, , , ])
year = birth_year random.randint(, )
month = random.randint(, )
day = random.randint(, )
seq =
base =
weights = [,,,,,,,,,,,,,,,,]
check =
s = ((base[i]) * weights[i] i ())
base + check[s % ]
():
prefix = name_pinyin .join(random.choices(string.ascii_lowercase, k=))
domain = random.choice([, , ,
, , ])
():
city = random.choice(.CITIES)
district = random.choice(.DISTRICTS)
road =
num = random.randint(, )
():
city = random.choice(.CITIES).replace(, )
industry = random.choice(.COMPANIES)
suffix = random.choice(.COMPANY_SUFFIX)
():
(random.uniform(min_val, max_val), )
():
s = datetime.strptime(start, )
e = datetime.strptime(end, )
delta = (e - s).days
d = s + timedelta(days=random.randint(, delta))
d.strftime()
():
faker = ChineseFaker()
wb = Workbook()
ws = wb.active
ws.title =
header_fill = PatternFill(, fgColor=)
header_font = Font(name=, size=, bold=, color=)
col, field (fields, ):
cell = ws.cell(row=, column=col, value=field)
cell.font = header_font
cell.fill = header_fill
row (, count + ):
name, gender = faker.name()
col, field (fields, ):
field == :
ws.cell(row=row, column=col, value=name)
field == :
ws.cell(row=row, column=col, value=gender)
field == :
ws.cell(row=row, column=col, value=faker.phone())
field == :
ws.cell(row=row, column=col, value=faker.id_card())
field == :
ws.cell(row=row, column=col, value=faker.email())
field == :
ws.cell(row=row, column=col, value=faker.address())
field == :
ws.cell(row=row, column=col, value=faker.company())
field == :
ws.cell(row=row, column=col, value=random.choice(
ChineseFaker.DEPARTMENTS))
field == :
ws.cell(row=row, column=col, value=faker.amount())
field == :
ws.cell(row=row, column=col, value=faker.date())
field == :
ws.cell(row=row, column=col, value=)
output_path:
output_path =
wb.save(output_path)
os.path.abspath(output_path)
Step 3: 交付
- 生成Excel文件
- 说明数据为虚构,不含真实个人信息
- 身份证号含正确校验位(但地区码为测试用)
示例
/wps-data-faker 生成100条员工测试数据,包含姓名、手机号、部门、工号
/wps-data-faker 50条数据:姓名、身份证号、地址、公司名
/wps-data-faker 给合同模板生成10组测试数据