Mock 假数据生成器

Mock 假数据生成器,是指按你定义的字段批量生成测试数据,每条结构一致,用来填数据库、试接口、做原型演示。本工具免费、无需注册:勾选中文姓名、手机号、省市区地址、公司、日期、金额、UUID 等类型,设定条数即可生成,一键导出 JSON、CSV 与 SQL INSERT;填一个种子就能让同一份字段每次生成完全一样的数据,粘贴 JSON 样例还能自动识别字段。全程浏览器本地生成,数据不上传。

先挑一套预设模板,或者从空白逐行加字段

字段表:每行一个字段,决定生成的测试数据长什么样

已有 6 / 30 个字段,可造的类型共 50 种。字段名写成 user.name 会在 JSON 里组装成嵌套对象,写成 tags[] 会出数组。

  • 参数与空值(起始值、步长
  • 参数与空值(性别倾向
  • 参数与空值(是否脱敏
  • 参数与空值(是否用任意域名、跟随姓名字段
  • 参数与空值(
  • 参数与空值(起止日期

号码按公开号段随机拼出,可能与真实号码重合,请勿拨打或用于注册

生成参数与结果

没填种子,每次点「重新生成」都会换一批新数据;想要每次都一样就填个种子。

分享的是字段定义,不含生成出来的数据;分享串写进地址的 # 片段,不会进访问统计的查询参数。

正在准备…

文本区显示的是全部 0 条;表格预览只画前 50 条,复制与下载永远是全部。

如何使用Mock 假数据生成器

1

点一套预设模板,或者逐行添加字段:每行选一个类型(中文姓名、手机号、地址、日期、金额…),展开还能调区间、枚举候选与空值比例——这一步就是在描述你要的测试数据生成出来长什么样。

2

填条数(最多 1000 条)与种子,右边实时出结果;想每次都一样就填个种子,想批量生成 json 数据就把格式留在 JSON,要导库就切到 SQL INSERT,要贴进文档就切 Markdown。

3

复制或下载;也可以切到「按样例识别」,粘一段 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 各是一个独立类型,选哪个就出哪种写法,导出时不会互相串味。

字段类型分组总览(共 50 种,与工具用的是同一份数据)
分组类型数典型类型示例值这一组管什么
编号与标识4 种自增序号、UUID、ObjectId 形态、短随机串1主键、UUID 与短随机串,导库时最先要的那一列
人物6 种中文姓名、英文姓名、性别、年龄陈静中文姓名、英文姓名、性别、年龄与生日,姓名按常见度分档加权
联系方式4 种手机号、固话、邮箱、用户名13812345678手机号、固话、邮箱与用户名,邮箱默认落在保留域名上
地址6 种省、市、区县、完整地址广东省省市区三级下钻的地址、邮编与经纬度,区划表是抽样不是全量
网络6 种IPv4、IPv6、MAC 地址、域名192.0.2.37IP、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 两栏。下表还写明了每种格式怎么处理嵌套与数组——能表达就原样表达,不能表达就点号平铺并逐条报告,绝不悄悄丢掉或悄悄变形。

六种输出格式的适用场景与嵌套处理(共 6 种)
格式适合导到哪嵌套与数组怎么办注意事项
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 KB329 KB 之间,取决于用哪套预设、导成哪种格式——这个量级复制和下载都是瞬间的事, 真正会拖慢手机的是把上千行画进表格,所以表格预览只画前 50 条,而复制与下载始终是全量。下面这张表是每套预设按满额生成后的实测体积, 用的是种子 deertools:你在本地填同一个种子,拿到的文件大小与它一致。

满额 1000 条时各输出格式的实测体积(构建时现算,不是估的)
预设模板字段数JSONNDJSONCSVSQL INSERT
用户表6 个177 KB136 KB77 KB97 KB
订单表7 个208 KB161 KB84 KB101 KB
商品表6 个302 KB261 KB205 KB218 KB
员工花名册7 个181 KB134 KB61 KB82 KB
访问日志6 个329 KB288 KB222 KB241 KB
通讯录6 个273 KB199 KB140 KB154 KB

条数该定多少,按用途倒推:接口联调与原型演示 10~50 条就够,一屏能看完;分页、排序、虚拟滚动这类要翻几页才暴露的问题,200 条起才试得出来; 给测试库铺底、看索引和慢查询,就直接拉满再分批拼。当成 json 数据生成器用时条数可以放开,JSON 本身没有行数上限;当成往库里灌数据的测试数据生成器用时则相反, SQL INSERT 语句生成后建议先拿一条在测试库里跑通再执行整批——列类型是按字段类型映射出来的,与你库里的实际定义未必一致。

字段名自动识别对照表:粘一段样例就能反推

字段名自动识别,是把你粘进来的样例里的每个列名映射成一个字段类型,省掉一行行搭表的功夫。把已有的 JSON 记录、CSV 表头、建表语句或 TypeScript interface 粘进来,工具按下面这张有序规则表逐条匹配,先匹配先赢;名字看不出来就退回去看 SQL 或 TS 的声明类型,再看不出来就按值的类型兜底,并在报告里明说哪一列是兜底猜的。规则一共 39 条,每条都带一个示例字段名。

字段名 → 字段类型的识别规则(共 39 条,先匹配先赢)
示例字段名会猜成猜错了怎么改
id自增序号要 UUID 主键就改成 UUID
uuidUUID要短串主键改成短随机串
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经纬度要分开两列就各建一个小数字段
ipIPv4要 IPv6 就改成 IPv6
macMAC 地址不需要就删掉这一行
urlURL只要域名改成域名
domain域名要完整链接改成 URL
user_agentUser-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 与银行卡号默认全部取自这类号段,即便这批数据被误发出去,也打不到真人真机;唯一的例外是手机号,它没有保留段可用,下表如实注明。这也是本工具与多数造数据站最实在的差别,而且每一条都可查。每一项都能切成「任意形态」,切换时页面会当场说明代价。

保留段对照表(共 6 项,逐条给出依据的公开标准)
项目本工具默认用什么依据的公开标准为什么这么选
随机邮箱生成 / 域名example.com、example.org、example.net 与 .test / .invalid 结尾RFC 2606 保留域名这些域名被标准永久保留给文档与测试,任何人都注册不到,误发也打不到真实邮箱
IPv4192.0.2.0/24、198.51.100.0/24、203.0.113.0/24RFC 5737 文档地址段三段专供文档举例,公网上不会路由到任何真实主机
IPv62001:db8:: 开头RFC 3849 文档前缀同上,IPv6 版的文档专用前缀
MAC 地址第二个十六进制位固定为 2 / 6 / A / EIEEE 802 本地管理位把本地管理位置 1 后,地址永远不会落在任何厂商 OUI 上
银行卡号仅卡组织公开文档里的测试 BIN,且不生成 62 开头各卡组织公开测试卡号测试 BIN 本就是给对接方跑用例用的,不对应任何真实发卡行
随机手机号生成工信部公开号段前三位 + 8 位随机无保留段可用手机号没有「文档专用段」这种东西,所以可能与真实号码重合,只能本地测试,不得拨打或注册;需要时可勾选脱敏输出

脏数据模式:缺陷都藏在这些边界值上

脏数据模式是按比例往生成结果里混进坏值的开关:打开后大约 8% 的格子会被换成下面这 11 类极端值中的一种,而且每一处注入都会在生成报告里点名是第几行、哪个字段、注入了哪一类——方便你确认「这条断言到底是被哪种脏数据打红的」。之所以要有这个开关:绝大多数造数据工具只产出漂亮数据,可真实项目里的缺陷几乎都出在边界上。脏数据生成因此不是拿来演示的,而是拿来打断言的——先用干净数据跑通主流程,再把同一份字段表、同一个种子加上这个开关跑第二遍,两次结果的差集就是你的校验没兜住的地方。

脏数据注入种类(共 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 接口数据的返回值、填测试用数据库数据、或者做原型演示,都只是换一个输出格式的事。