page contents

别再手动造测试数据了!Python这个库1分钟生成10万条假数据

说实话,刚工作那会儿我干过最蠢的事,就是手搓测试数据。上百条用户信息,一条一条敲:姓名、邮箱、手机号、地址...敲到怀疑人生。后来同事扔给我一个Python库:Faker。

attachments-2026-04-TAHlBxef69cf17ddecb3c.png说实话,刚工作那会儿我干过最蠢的事,就是手搓测试数据。上百条用户信息,一条一条敲:姓名、邮箱、手机号、地址...敲到怀疑人生。后来同事扔给我一个Python库:Faker

用完我直接沉默了。这玩意儿,1 分钟能生成 10 万条逼真的假数据,还能按国家、按场景定制。早知道有这好东西,我当年能少加多少班?今天就把这个神器分享给你。

一、Faker 是个啥?

简单说,Faker 就是一个假数据生成器

它能生成什么?这么说吧,你能想到的数据类型它基本都能生成:

  • 人名、地址、电话、邮箱
  • 公司名称、职位、行业
  • 银行卡号、信用卡信息
  • 日期时间、URL、文本段落
  • 甚至还能生成身份证、车牌、颜色...

官方文档上有完整的 Provider 列表,上百种数据类型,基本上足够你用了。

安装:

pip install Faker

二、5 分钟上手,生成第一条假数据

别被功能多吓到,Faker 上手几乎零门槛。

from faker import Faker

# 初始化(使用中文场景)
fake = Faker('zh_CN')

# 生成假数据
print(fake.name())        # 张强
print(fake.address())     # 黑龙江省牡丹江市...
print(fake.phone_number()) # 13812345678
print(fake.email())       # wangfang@example.com

看到没?就这么几行代码,一条完整的用户数据就出来了。

批量生成?更简单

from faker import Faker

fake = Faker('zh_CN')

# 生成 100 条用户数据
users = []
for _ in range(100):
    users.append({
        'name': fake.name(),
        'email': fake.email(),
        'phone': fake.phone_number(),
        'address': fake.address(),
        'company': fake.company(),
        'job': fake.job()
    })

# 看看前 3 条
for user in users[:3]:
    print(user)

输出长这样:



数据挺逼真吧?

三、进阶玩法:按场景定制

Faker 真正厉害的地方,是它能按具体场景生成数据。

1. 生成特定国家的数据

from faker import Faker

# 美国数据
fake_us = Faker('en_US')
print(fake_us.name())     # John Smith
print(fake_us.address())  # 123 Main St, New York, NY

# 日本数据
fake_jp = Faker('ja_JP')
print(fake_jp.name())     # 佐藤 健

# 多个地区混合
fake_mixed = Faker(['zh_CN''en_US''ja_JP'])
print(fake_mixed.name())  # 随机从三个地区选

做国际化项目测试的时候,这个功能简直救命。

2. 控制数据格式

有时候你需要特定格式的数据,Faker 也支持:

from faker import Faker

fake = Faker('zh_CN')

# 指定日期范围
print(fake.date_between(start_date='-1y'end_date='today'))

# 指定数字范围
print(fake.random_int(min=1000max=9999))

# 自定义文本长度
print(fake.text(max_nb_chars=50))

3. 固定随机种子(复现数据)

调试的时候,你可能希望每次生成的数据一样:

from faker import Faker

fake = Faker()
fake.seed_instance(12345)

print(fake.name())  # 每次运行都输出同一个名字

这个功能在写单元测试时特别有用。

四、我用过的真实场景

简单说几个我实际用过的场景,希望能够给你点灵感。

场景 1:填充开发环境数据库

新搭了一个项目,数据库空荡荡的怎么看怎么别扭。用 Faker 填充一下:

from faker import Faker
import sqlite3

fake = Faker('zh_CN')
conn = sqlite3.connect('test.db')
cursor = conn.cursor()

for _ in range(1000):
    cursor.execute(
        "INSERT INTO users (name, email, phone, created_at) VALUES (?, ?, ?, ?)",
        (fake.name(), fake.email(), fake.phone_number(), fake.date_time_this_year())
    )

conn.commit()
conn.close()
print("Done!1000条数据已插入")

跑一次,数据库立马"丰满"起来。

场景 2:生成测试用的 CSV/Excel 文件

想要学习pandas,但没有操作对象,需要一个有数据的CSV/Excel文件。Faker 生成一个:

from faker import Faker
import pandas as pd

fake = Faker('zh_CN')

temp_users = [
    {
        "name":fake.name(),
        "email":fake.email(),
        "phone":fake.phone_number(),
        "company":fake.company(),
        "job":fake.job()
    }
    for _ in range(1000)
]

pd.DataFrame(temp_users).to_csv("users.csv")
print("Done!")

场景 3:Mock API 响应

前端要开发,后端接口还没开发好?用 Faker mock 一下:

from flask import Flask, jsonify
from faker import Faker

app = Flask(__name__)
fake = Faker('zh_CN')

@app.route('/api/users')
def get_users():
    users = [{
        'id': i,
        'name': fake.name(),
        'email': fake.email(),
        'avatar': fake.image_url()
    } for i in range(10)]
    return jsonify(users)

app.run()

前端拿着这个接口照样开发,等后端好了再替换。

五、踩坑记录(别问我怎么知道的)

用 Faker 的日子里踩过几个坑,需要注意一下:

坑 1:中文乱码

生成 CSV 或写入文件时,记得用 encoding='utf-8-sig',不然 Excel 打开可能会乱码。

坑 2:性能问题

生成少量数据没问题,但一次性生成 10 万+ 条会慢。建议分批生成,或者用多进程。

坑 3:数据重复

Faker 不保证数据唯一性。如果需要唯一邮箱、唯一手机号,可以加个校验逻辑:

emails = set()
while len(emails) < 100:
    email = fake.email()
    if email not in emails:
        emails.add(email)

六、最后多说两句

Faker 这个库,属于那种"用了就回不去"的工具。

它虽不能帮你解决核心业务上的问题,但肯定能帮你节省准备数据的大量琐碎时间。把这些时间省下来,写写核心业务代码、看看文档、换换脑子、甚至早点下班陪陪家人,不香吗?

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

1920 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 2228 文章
  3. Pack 1920 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章