Mock 假数据生成器
Mock 假数据生成器,是指按你定义的字段批量生成测试数据,每条结构一致,用来填数据库、试接口、做原型演示。本工具免费、无需注册:勾选中文姓名、手机号、省市区地址、公司、日期、金额、UUID 等类型,设定条数即可生成,一键导出 JSON、CSV 与 SQL INSERT;填一个种子就能让同一份字段每次生成完全一样的数据,粘贴 JSON 样例还能自动识别字段。全程浏览器本地生成,数据不上传。
先挑一套预设模板,或者从空白逐行加字段
字段表:每行一个字段,决定生成的测试数据长什么样
已有 6 / 30 个字段,可造的类型共 50 种。字段名写成 user.name 会在 JSON 里组装成嵌套对象,写成 tags[] 会出数组。
参数与空值(起始值、步长)
参数与空值(性别倾向)
参数与空值(是否脱敏)
参数与空值(是否用任意域名、跟随姓名字段)
参数与空值(无)
参数与空值(起止日期)
号码按公开号段随机拼出,可能与真实号码重合,请勿拨打或用于注册
生成参数与结果
没填种子,每次点「重新生成」都会换一批新数据;想要每次都一样就填个种子。
分享的是字段定义,不含生成出来的数据;分享串写进地址的 # 片段,不会进访问统计的查询参数。
正在准备…
文本区显示的是全部 0 条;表格预览只画前 50 条,复制与下载永远是全部。
如何使用Mock 假数据生成器
点一套预设模板,或者逐行添加字段:每行选一个类型(中文姓名、手机号、地址、日期、金额…),展开还能调区间、枚举候选与空值比例——这一步就是在描述你要的测试数据生成出来长什么样。
填条数(最多 1000 条)与种子,右边实时出结果;想每次都一样就填个种子,想批量生成 json 数据就把格式留在 JSON,要导库就切到 SQL INSERT,要贴进文档就切 Markdown。
复制或下载;也可以切到「按样例识别」,粘一段 JSON 记录、CSV 表头、CREATE TABLE 语句或 TypeScript interface,字段表会自动搭好再让你逐行改类型。
关于Mock 假数据生成器的常见问题
- mock 假数据生成器会上传我的字段名和数据吗?
- 不会上传。词库、区划表、号段表全部内置在页面里,不联网去任何 mock 站或接口拉取,所以你定义了哪些字段名、粘了哪段建表语句、生成出来的数据长什么样,都不会告诉任何服务器。生成、序列化、下载全在你的浏览器本地完成。粘贴的样例刷新即清空,字段表只有你主动点「保存这套字段」才会留在本机,随时可以清除;分享串写进地址的井号片段而不是查询串,不会进访问统计的参数。(站点自身仅有匿名访问量统计,与你的字段名无关。)
- mock 假数据的字段表能保存和分享给同事吗?
- 能,而且分享出去的只有字段定义,不含生成出来的数据。点「保存这套字段」会把字段表连同条数、格式、空值率这些参数一起存进本机浏览器,下次进来直接取;点「分享字段表」会把同一套东西编码进地址的井号片段,发给同事打开就是同一张表。两处走的是同一条恢复路径,不会只回填一半。要注意种子不跟着分享走,它留在你自己手里;想让同事拿到逐字节相同的数据,把种子单独说一声。
- 手机上能用这个假数据生成器吗?需要装软件吗?
- 可以,不用装任何 App、插件或命令行工具。这是纯网页实现,手机、平板、电脑浏览器打开即用。窄屏上字段表会改成一行一卡,字段名和类型下拉在上、参数折叠在下;结果区和四张速查表都可以横向滚动。复制走系统剪贴板,剪贴板不可用时会提示你手动选中文本而不是静默失败。下载的文件名不以点开头,手机浏览器不会把它当成隐藏文件或者悄悄改扩展名。
- 怎么批量生成 json 测试数据并导进数据库?
- 两条路。要走接口或前端假数据,就把格式留在 JSON,字段名写成带点号的形式还能组装成嵌套对象,写成带方括号的形式会出数组,复制出来直接粘进代码或 mock 接口数据的返回值里。要直接灌库,就切到 SQL INSERT:可以选 MySQL 或 PostgreSQL 方言、填表名、勾上附带建表语句,再决定是合并成一条 INSERT 还是一行一条。要走导入工具,就用 CSV,默认带 UTF-8 BOM,Excel 和多数导入向导打开中文都不会乱码。
- 假数据 csv 导出后用 Excel 打开中文乱码怎么办?
- 正常情况下不会乱码:切到 CSV 格式导出时,文件开头默认写入 UTF-8 BOM,Excel 与 WPS 双击打开中文就是正常的。真的乱码时先看「带 UTF-8 BOM」这个勾有没有被取消——只有把 CSV 喂给不认 BOM 的导入脚本时才需要关掉它。如果乱码的是别处导出的文件,多半是无 BOM 的 UTF-8 被当成 GBK 读了,用文本编辑器另存为带 BOM 的 UTF-8 即可。分隔符也能换成分号或制表符,以配合某些地区版 Excel 的默认列表分隔符。
- 测试数据生成怎么才能每次都一模一样?
- 填一个种子就行。种子非空时随机源换成可复现的确定性算法,同一份字段表、同样的条数与参数,在任何浏览器、任何设备上都会产出逐字节相同的数据;种子留空则每次都是新的一批。它最实在的用途是复现只在特定数据下出现的缺陷:团队之间只要传「字段表加种子」这两样,不必互相传数据文件,而数据文件里常常混着真实内容。种子的口径与站内随机抽签类工具是同一份,同一个种子在两边给出同一串随机数。
- 假数据里的手机号、地址和邮箱是真实的吗?
- 都不是真实的,彼此之间也没有任何对应关系。邮箱与域名默认落在 RFC 2606 保留域名上,IPv4 用 RFC 5737 的文档地址段,IPv6 用 2001:db8 前缀,MAC 把本地管理位置 1,银行卡只用卡组织公开的测试号段,这些值在真实世界里打不到任何人任何设备。要如实说明的是手机号:它没有对应的保留段,只能按公开号段随机拼出 11 位,因此可能与真实号码重合,只可用于本地测试,不得拨打、群发或用于注册,需要时可以勾选脱敏输出。
- 一次最多能生成多少条测试数据?
- 一次最多 1000 条、30 个字段。这是防误操作和防低端手机卡顿的界面上限,不是算法能力上限,需要更多就换个种子分批生成,几批拼起来即可。还有一处刻意的展示降级:表格预览只画前 50 条,因为把上千行全塞进页面会让手机明显卡顿;但复制和下载拿到的永远是完整的全部条数,页面上方的统计里也写着实际生成了多少条。
- 能按建表语句或 JSON 样例生成对应的假数据吗?
- 可以,这是本工具的第二个入口。切到「按样例识别」,粘一条完整的 JSON 记录或数组、一行 CSV 表头、一段 CREATE TABLE 语句,或者一个 TypeScript interface,工具会先按字段名的中英文语义猜类型,猜不出来再看 SQL 或 TS 的声明类型,还猜不出就按值的类型兜底并明确告诉你哪一列是兜底猜的。识别只是把起点从空白挪到八成,不是黑箱:认出来的每一行都还能改类型、调参数、加空值率。解析失败时会给出中文说明,输入框不会被清空。
- 生成 sql 测试数据能直接导进数据库吗?
- 可以,但请只导进测试库。SQL 输出会按字段类型映射列类型,字符串转义只做单引号翻倍并剥掉空字节——这足够让测试脚本跑通,却不是通用的 SQL 转义器,生产代码请一律用参数化查询。另外要知道边界:本工具不模拟数据库约束,勾了唯一也只在这一批之内唯一,跨两次生成不保证;外键与业务规则一概不管。表名和列名会走白名单替换,非法字符换成下划线并在报告里点名,用户输入绝不会原样拼进标识符位置。
- 假数据生成器能生成有外键关联的多张表吗?
- 不能,一次只生成一张表,但同一行内的字段可以联动。给一个字段选「跟随」另一个字段,邮箱和用户名就会按同一行的姓名拼出来,看上去像是一个人的资料。要造有外键的两张表,实用的办法是分两次生成:先生成主表、把自增序号当主键,再生成子表,把外键那一列设成同一区间的整数或枚举候选,让它落在主表已有的取值里。工具不校验这层关系,导库前请自己核对一遍。
- 假数据生成的身份证号能用来实名注册吗?
- 不能,也请不要尝试。证件与卡号这一组默认是折叠的,要逐项勾选才会出现,生成的号码只满足格式与校验位规则,不对应任何真实登记信息,也不与同一行的姓名有任何关联——工具刻意不提供「按指定姓名生成配套证件号」的入口。校验位默认算对,是因为校验位错的号码根本测不了校验逻辑,而那正是这类字段唯一正当的用途;需要负用例时可以勾上「校验位故意写错」。本工具也不做身份证归属地、手机号归属地这类反查,那是查真人,与造假数据方向相反。
- 这个假数据生成器和 faker、mock.js 有什么区别?
- 定位不同,各有各合适的场景。faker 在线的各种封装和 mock.js 在线的模板语法都是库,强在能写进代码、跟着测试跑;本工具是打开就用的网页,强在中文口径的词库、勾一下就换的输出格式,以及三件它们通常不做的事:默认把邮箱、IP、MAC、测试卡号放进标准保留段,同一行的字段可以联动,还能按比例注入空值与脏数据并逐条报告注入到了哪一行哪一列。字段名与数据全程不出浏览器,也不需要装依赖。
字段类型总览:模拟数据生成能造哪些字段
字段类型一共 50 种,分成 9 组。随机姓名生成、随机手机号生成、随机地址生成、随机邮箱生成这四类最常被用到,它们都是中文口径的词库,而不是把英文假数据翻译一遍:姓名按常见度分档加权,地址走省、市、区县三级下钻,公司名带上城市与行业词。随机日期生成走的是另一条路子——不查词库,而是在你给的起止日期之间取值,日期、日期时间、时间戳与 ISO 8601 各是一个独立类型,选哪个就出哪种写法,导出时不会互相串味。
| 分组 | 类型数 | 典型类型 | 示例值 | 这一组管什么 |
|---|---|---|---|---|
| 编号与标识 | 4 种 | 自增序号、UUID、ObjectId 形态、短随机串 | 1 | 主键、UUID 与短随机串,导库时最先要的那一列 |
| 人物 | 6 种 | 中文姓名、英文姓名、性别、年龄 | 陈静 | 中文姓名、英文姓名、性别、年龄与生日,姓名按常见度分档加权 |
| 联系方式 | 4 种 | 手机号、固话、邮箱、用户名 | 13812345678 | 手机号、固话、邮箱与用户名,邮箱默认落在保留域名上 |
| 地址 | 6 种 | 省、市、区县、完整地址 | 广东省 | 省市区三级下钻的地址、邮编与经纬度,区划表是抽样不是全量 |
| 网络 | 6 种 | IPv4、IPv6、MAC 地址、域名 | 192.0.2.37 | IP、MAC、域名、URL 与 User-Agent,默认全部落在文档保留段 |
| 时间 | 5 种 | 日期、日期时间、时间、时间戳(秒) | 2025-03-14 | 日期、日期时间、时间戳与 ISO 8601,一律按无时区的字面时间生成 |
| 商业与业务 | 7 种 | 公司名、部门、职位、商品名 | 深圳恒宇科技有限公司 | 公司、部门、职位、商品、金额、订单号与状态,只保证形态像 |
| 基础与文本 | 9 种 | 整数、小数、布尔、枚举 | 482 | 整数、小数、布尔、枚举、颜色与中英文占位文本 |
| 证件与卡号(测试专用) | 3 种 | 身份证号、银行卡号、车牌号 | 440305199407184018 | 默认折叠、逐项勾选;只满足格式与校验位规则,不对应任何真实登记信息 |
区划表是抽样不是完整区划库:目前收录 10 个省级单位下的 46 个区县,邮编与区县大致对应但不保证精确,经纬度只保证落在中国陆地的大致外接框内,可能落在水面。词库为团队自建策展的常用集合,复核于 2026-09-02,不宣称覆盖全部姓氏与地名。
假数据导出格式怎么选:JSON、CSV 还是 SQL
同一批数据有 6 个出口,分别对着接口、日志管道、Excel、数据库、文档与代码,下表逐行写明哪个格式适合导到哪。换格式只重新序列化、不会重新掷随机数,所以填了种子时换格式数据一个字节都不变。找 random json generator 的多半就是这里的 JSON 与 NDJSON 两栏。下表还写明了每种格式怎么处理嵌套与数组——能表达就原样表达,不能表达就点号平铺并逐条报告,绝不悄悄丢掉或悄悄变形。
| 格式 | 适合导到哪 | 嵌套与数组怎么办 | 注意事项 |
|---|---|---|---|
| JSON 数组 | 喂接口 mock、写前端假数据、当随机 json 生成器用 | 原生支持:点号字段名会组装成嵌套对象,方括号后缀出数组 | 缩进可选 2 / 4 / 制表符 / 压缩一行 |
| NDJSON 逐行 JSON | 灌日志管道、Elasticsearch bulk、逐行流式读取 | 同 JSON,每行一个独立对象 | 每行都能被单独解析,超大文件不必整份读进内存 |
| CSV 表格 | 导 Excel、导数据库、拿假数据 csv 给同事对字段 | 不支持:点号平铺成列名,数组转成 JSON 字符串 | 默认带 UTF-8 BOM,Excel 打开中文不乱码;分隔符可换分号或制表符 |
| SQL INSERT 脚本 | 直接生成 sql 测试数据灌进本地库,可附带建表语句 | 不支持:同 CSV 平铺 | 这是给测试库用的脚本,生产代码请一律用参数化查询 |
| Markdown 表格 | 贴进需求文档、Issue、周报里给人看 | 不支持:同 CSV 平铺 | 复用站内表格生成器,最多输出 200 行 × 20 列,超出会明确提示 |
| TypeScript 类型 | 把字段表直接变成 interface,配合前端写假数据 | 只输出扁平字段的类型声明,不展开嵌套 | 空值率大于 0 的字段会带上 null 联合类型 |
下面这几种写法在页面上一律按原文显示,抄进字段名时别丢符号:
user.name—— 点号路径,JSON 里组装成嵌套对象tags[]—— 方括号后缀,按长度区间生成数组值*权重—— 枚举候选的加权语法,与随机点名器逐字一致2001:db8::—— IPv6 默认落在这个文档前缀里example.com—— 邮箱与域名默认用的保留域名
这段是用默认的「用户表」预设、种子 deertools 生成的两条,页面打开时看到的就是这种形态:
[
{
"id": 1,
"name": "于和",
"phone": "15136278741",
"email": "yuhe@example.net",
"city": "上海市",
"created_at": "2026-10-16 02:57:23"
},
{
"id": 2,
"name": "李倩强",
"phone": "16661823380",
"email": "liqianqiang@example.com",
"city": "北京市",
"created_at": "2023-12-05 07:09:00"
}
]生成 1000 条测试数据大概多大、会不会卡
满额 1000 条的体积在 61 KB 到 329 KB 之间,取决于用哪套预设、导成哪种格式——这个量级复制和下载都是瞬间的事, 真正会拖慢手机的是把上千行画进表格,所以表格预览只画前 50 条,而复制与下载始终是全量。下面这张表是每套预设按满额生成后的实测体积, 用的是种子 deertools:你在本地填同一个种子,拿到的文件大小与它一致。
| 预设模板 | 字段数 | JSON | NDJSON | CSV | SQL INSERT |
|---|---|---|---|---|---|
| 用户表 | 6 个 | 177 KB | 136 KB | 77 KB | 97 KB |
| 订单表 | 7 个 | 208 KB | 161 KB | 84 KB | 101 KB |
| 商品表 | 6 个 | 302 KB | 261 KB | 205 KB | 218 KB |
| 员工花名册 | 7 个 | 181 KB | 134 KB | 61 KB | 82 KB |
| 访问日志 | 6 个 | 329 KB | 288 KB | 222 KB | 241 KB |
| 通讯录 | 6 个 | 273 KB | 199 KB | 140 KB | 154 KB |
条数该定多少,按用途倒推:接口联调与原型演示 10~50 条就够,一屏能看完;分页、排序、虚拟滚动这类要翻几页才暴露的问题,200 条起才试得出来; 给测试库铺底、看索引和慢查询,就直接拉满再分批拼。当成 json 数据生成器用时条数可以放开,JSON 本身没有行数上限;当成往库里灌数据的测试数据生成器用时则相反, SQL INSERT 语句生成后建议先拿一条在测试库里跑通再执行整批——列类型是按字段类型映射出来的,与你库里的实际定义未必一致。
字段名自动识别对照表:粘一段样例就能反推
字段名自动识别,是把你粘进来的样例里的每个列名映射成一个字段类型,省掉一行行搭表的功夫。把已有的 JSON 记录、CSV 表头、建表语句或 TypeScript interface 粘进来,工具按下面这张有序规则表逐条匹配,先匹配先赢;名字看不出来就退回去看 SQL 或 TS 的声明类型,再看不出来就按值的类型兜底,并在报告里明说哪一列是兜底猜的。规则一共 39 条,每条都带一个示例字段名。
| 示例字段名 | 会猜成 | 猜错了怎么改 |
|---|---|---|
id | 自增序号 | 要 UUID 主键就改成 UUID |
uuid | UUID | 要短串主键改成短随机串 |
user_id | 自增序号 | 外键想散开就改成整数并调区间 |
mobile | 手机号 | 要固话改成固话类型 |
email | 邮箱 | 想跟着姓名走就设联动字段 |
username | 用户名 | 要中文昵称改成昵称 |
nickname | 昵称 | 要真名改成中文姓名 |
company | 公司名 | 要部门改成部门 |
department | 部门 | 要职位改成职位 |
job_title | 职位 | 要普通文本改成中文句子 |
product_name | 商品名 | 要公司名改成公司名 |
name | 中文姓名 | 要英文名改成英文姓名 |
gender | 性别 | 要 0/1 改成枚举并填候选 |
age | 年龄 | 区间不合适就展开改 min / max |
birthday | 出生日期 | 要带时分秒改成日期时间 |
province | 省 | 要完整地址改成完整地址 |
city | 市 | 只要区县就改成区县 |
district | 区县 | 要市级改成市 |
zipcode | 邮编 | 不需要就删掉这一行 |
address | 完整地址 | 只要城市就改成市 |
latlng | 经纬度 | 要分开两列就各建一个小数字段 |
ip | IPv4 | 要 IPv6 就改成 IPv6 |
mac | MAC 地址 | 不需要就删掉这一行 |
url | URL | 只要域名改成域名 |
domain | 域名 | 要完整链接改成 URL |
user_agent | User-Agent | 不需要就删掉这一行 |
created_at | 日期时间 | 只要日期改成日期 |
timestamp | 时间戳(秒) | 要可读时间改成日期时间 |
date | 日期 | 要带时分秒改成日期时间 |
price | 金额 | 要整数分改成整数 |
order_no | 订单号 | 要 UUID 就改成 UUID |
status | 状态 | 状态值不对就改成枚举自己填候选 |
is_deleted | 布尔 | 要 0/1 改成整数并把区间设成 0~1 |
view_count | 整数 | 要小数改成小数 |
color | 颜色 | 要中文颜色名改成枚举 |
remark | 中文句子 | 要长文改成中文段落 |
id_card | 身份证号 | 只要格式不要校验位就勾上「校验位写错」 |
bank_card | 银行卡号 | 不需要就删掉这一行 |
plate_no | 车牌号 | 不需要就删掉这一行 |
假数据用什么值才不会撞到真实世界
假数据要做到不撞真实世界,靠的是把值放进标准专门留给文档与测试的那几段:本工具的邮箱、域名、IPv4、IPv6、MAC 与银行卡号默认全部取自这类号段,即便这批数据被误发出去,也打不到真人真机;唯一的例外是手机号,它没有保留段可用,下表如实注明。这也是本工具与多数造数据站最实在的差别,而且每一条都可查。每一项都能切成「任意形态」,切换时页面会当场说明代价。
| 项目 | 本工具默认用什么 | 依据的公开标准 | 为什么这么选 |
|---|---|---|---|
| 随机邮箱生成 / 域名 | example.com、example.org、example.net 与 .test / .invalid 结尾 | RFC 2606 保留域名 | 这些域名被标准永久保留给文档与测试,任何人都注册不到,误发也打不到真实邮箱 |
| IPv4 | 192.0.2.0/24、198.51.100.0/24、203.0.113.0/24 | RFC 5737 文档地址段 | 三段专供文档举例,公网上不会路由到任何真实主机 |
| IPv6 | 2001:db8:: 开头 | RFC 3849 文档前缀 | 同上,IPv6 版的文档专用前缀 |
| MAC 地址 | 第二个十六进制位固定为 2 / 6 / A / E | IEEE 802 本地管理位 | 把本地管理位置 1 后,地址永远不会落在任何厂商 OUI 上 |
| 银行卡号 | 仅卡组织公开文档里的测试 BIN,且不生成 62 开头 | 各卡组织公开测试卡号 | 测试 BIN 本就是给对接方跑用例用的,不对应任何真实发卡行 |
| 随机手机号生成 | 工信部公开号段前三位 + 8 位随机 | 无保留段可用 | 手机号没有「文档专用段」这种东西,所以可能与真实号码重合,只能本地测试,不得拨打或注册;需要时可勾选脱敏输出 |
脏数据模式:缺陷都藏在这些边界值上
脏数据模式是按比例往生成结果里混进坏值的开关:打开后大约 8% 的格子会被换成下面这 11 类极端值中的一种,而且每一处注入都会在生成报告里点名是第几行、哪个字段、注入了哪一类——方便你确认「这条断言到底是被哪种脏数据打红的」。之所以要有这个开关:绝大多数造数据工具只产出漂亮数据,可真实项目里的缺陷几乎都出在边界上。脏数据生成因此不是拿来演示的,而是拿来打断言的——先用干净数据跑通主流程,再把同一份字段表、同一个种子加上这个开关跑第二遍,两次结果的差集就是你的校验没兜住的地方。
| 种类 | 适用字段 | 想打红的是什么 |
|---|---|---|
| 超长字符串 | 文本类 | 字段长度限制与 UI 截断 |
| 前后空格 | 文本类 | 忘了 trim 的比较与登录 |
| 全角空格 | 文本类 | 只 trim 半角空格的清洗逻辑 |
| 零宽字符 | 文本类 | 看着一样却不相等的字符串 |
| emoji(含代理对) | 文本类 | 按 UTF-16 长度截断导致的乱码 |
| 单引号与双引号 | 文本类 | SQL 拼接与 CSV 转义 |
| 标签文本 | 文本类 | 前端未转义直出 |
| 负零 | 数值类 | Object.is 与序列化差异 |
| 超安全整数 | 数值类 | JSON 解析丢精度 |
| 闰日 2 月 29 日 | 时间类 | 闰年判断 |
| 跨年边界 | 时间类 | 跨年与周数计算 |
在线生成测试数据的三种起手方式
这个造数据工具有三个入口,随便从哪个进都行,进来之后都是同一张字段表,可以接着改:
- 预设模板:内置 6 套(用户表、订单表、商品表、员工花名册、访问日志、通讯录),点一下把字段表填好。
- 逐行搭:从空白开始,一行一个字段,适合字段不多但要求很具体的场景。
- 按样例反推:把已有的结构粘进来,字段表自动搭好八成,再逐行微调。
无论从哪个入口进,找 mock data generator / fake data generator / test data generator 的人要的都是同一件事:一个不用装依赖、能直接出结果的随机数据生成器。mock 数据生成之后要拿去做 mock 接口数据的返回值、填测试用数据库数据、或者做原型演示,都只是换一个输出格式的事。