Faker.Net 是面向 .NET / C# 的开源模拟测试数据生成库,灵感源自 Ruby Faker 生态,专门解决开发调试、数据库初始化、单元测试时缺少大批量仿真测试数据的问题。
项目地址:https://github.com/jonwingfield/Faker.Net
快速生成各类贴近真实业务的伪造数据,常见类型:
- 人员信息:姓名、性别、手机号、邮箱、身份证
- 地理信息:省市、详细地址、邮编
- 业务数据:公司名称、职位、文本摘要、日期时间
- 网络信息:IP地址、URL、用户名
批量往人员测试表插入上百条不同姓名、性别、联系方式的记录,无需手动录入。
NuGet 安装包
Install-Package Faker.NetCode language: CSS (css)
或者 CLI
dotnet add package Faker.NetCode language: CSS (css)
代码示例
using Faker;
// 生成姓名
string fullName = Name.FullName();
// 生成手机号
string phone = Phone.Number();
// 生成邮箱
string email = Internet.Email();
// 生成地址
string address = Address.FullAddress();Code language: JavaScript (javascript)
批量生成数据示范
// 循环批量创建10条用户测试数据
var userList = new List<User>();
for (int i = 0; i < 10; i++)
{
userList.Add(new User()
{
Name = Name.FullName(),
Phone = Phone.Number(),
Email = Internet.Email(),
Address = Address.FullAddress()
});
}Code language: HTML, XML (xml)
生成随机姓名
控制台程序例子
static void Main(string[] args)
{
// 循环生成100条随机英文姓名
for (int i = 0; i < 100; i++)
{
Console.WriteLine(Name.GetName());
}
Console.ReadKey();
}Code language: JavaScript (javascript)
运行效果:输出 Bonnie Eichmann、Adrien Crooks 这类英文全名,部分姓名会附带头衔(Miss、Mrs)或者后缀(PhD、IV)。
源码底层实现解析
public static class Name
{
public static string GetName()
{
// 生成0~9随机整数
switch (FakerRandom.Rand.Next(10))
{
// 10%概率:头衔 + 名 + 姓(Miss Deontae Mante)
case 0:
return GetPrefix() + " " + GetFirstName() + " " + GetLastName();
// 10%概率:名 + 姓 + 后缀(Haskell Morissette PhD)
case 1:
return GetFirstName() + " " + GetLastName() + " " + GetSuffix();
// 剩余80%概率:标准 名 + 姓(Adrien Crooks)
default:
return GetFirstName() + " " + GetLastName();
}
}
// 获取名字,从内置名字数组随机选取
public static string GetFirstName()
{
return FIRST_NAMES.Rand();
}
}Code language: PHP (php)
Next: Lorem 随机文本生成