介绍


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 EichmannAdrien 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)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注