当前位置:首页>python>测试数据生成python库FakerX

测试数据生成python库FakerX

  • 2026-10-21 13:27:24
测试数据生成python库FakerX

FakerX一个测试数据生成的Python库

FakerX 是一个强大的 Python 库,用于生成高质量的测试数据。它是 Faker 库的增强版,提供了更丰富的自定义选项、更灵活的数据结构生成,并集成了数据验证功能。

安装

pip install fakerx

基础用法

from fakerx import FakerX

fake = FakerX('zh_CN')

name = fake.name()
address = fake.address()
date = fake.date_of_birth()

print(f'生成姓名: {name}')
print(f'生成地址: {address}')
print(f'生成出生日期: {date}')

结构化数据生成

user_schema = {
'id': '{pyint}',
'username': '{user_name}',
'email': '{email}',
'profile': {
'level': {'elements': ['初级', '中级', '高级']}
    }
}

user_data = fake.schema(user_schema, iterations=2)
print(user_data)

数据验证

from pydantic import BaseModel, EmailStr, conint

class User(BaseModel):
id: conint(gt=0)
    name: str
    email: EmailStr

valid_user = fake.pydantic(User)
print(valid_user)

批处理

usernames = fake.batch('user_name', iterations=1000, unique=True)
print(usernames[:5])

唯一字段约束

user_schema = {
'id': '{pyint}',
'username': '{user_name}',
'email': '{email}'
}

user_data = fake.schema(user_schema, iterations=5, unique_fields=['username', 'email'])
print(user_data)

数据导出

# 导出为JSON
json_data = fake.to_json(user_data)
print(json_data)

# 导出为CSV
csv_data = fake.to_csv(user_data)
print(csv_data)

# 保存到文件
fake.to_csv(user_data, 'users.csv')

高级功能

# 生成UUID
uid = fake.uuid4()
print(f'UUID: {uid}')

# 自定义URL
custom_url = fake.custom_url('example.com')
print(f'自定义URL: {custom_url}')

# 邮箱验证
is_valid = fake.validate_email('test@example.com')
print(f'邮箱有效: {is_valid}')

# 设置随机种子
fake.seed(42)
name1 = fake.name()
fake.seed(42)
name2 = fake.name()
print(f'重现结果: {name1 == name2}')

# 批量生成(生成器)
usernames_gen = fake.batch('user_name', iterations=1000, unique=True)
first_5 = list(usernames_gen)[:5]
print(f'前5个用户名: {first_5}')

# 数据统计
stats = fake.stats(user_data)
print(f'数据统计: {stats}')

# 带验证的数据生成
valid_email = fake.generate_with_validation('email', lambda x: 'test' not in x)
print(f'有效邮箱: {valid_email}')

命令行工具

# 安装后可以使用命令行工具
pip install -e .

# 生成10个用户名
fakerx --method user_name --count 10

# 从schema文件生成数据
fakerx --schema user_schema.json --count 5 --output users.json

# 生成CSV格式数据
fakerx --schema user_schema.json --count 5 --format csv --output users.csv

数据库集成

# 将数据插入SQLite数据库
fake.to_database(user_data, 'users', 'test.db')

配置文件支持

创建 config.yaml:

schema:
id: '{pyint}'
name: '{name}'
email: '{email}'
iterations: 10
unique_fields: ['email']
# 从配置文件生成数据
data = fake.generate_from_config('config.yaml')

异步生成

import asyncio

async def main():
# 异步批量生成
    names = await fake.async_batch('name', iterations=100)
print(names[:5])

asyncio.run(main())

源码地址

https://github.com/likangcai/FakerX

最新文章

随机文章