【awesome-dotnet-core-learning】(3)-Bogus-假数据生成器

【awesome-dotnet-core-learning】(3)-Bogus-假数据生成器

简介

Bogus一个简单而强大的假数据生成器,用于C#,F#和VB.NET.从著名的faker.js移植过来.

在测试或者需要一些虚拟的数据时,Bogus就可以派上用场了.这是一个移植自faker.js的一个.NET的库,帮助你快速生成看起来有意义的假数据.该项目已经发展很长时间了,在很多有名的项目中都有使用.

特点

  • 简单而又强大的数据生成
  • 内置多种假数据集(用户名,公司名,邮箱地址,地址等)
  • 假数据支持本地化(如中文,日文,韩文等)
  • 多种API语法:流式,非流式
  • 庞大而活跃的社区

快速上手

以下示例演示了用Bogus生成一个假的用户信息例子.该用户包含以下属性:

  • 名字
  • 年龄
  • 性别
  • 公司
  • 电话
  1. 创建一个.NET Core的命令行应用程序(详细步骤略)
  2. 使用Nuget安装Bogus:

    Install-Package Bogus
  3. 为了输出生成的用户的信息,我们再安装著名的Json.Net:

    Install-Package Newtonsoft.Json
  4. Program.cs中,我们先创建User的类定义:

    class User
    {
        /// 
        /// 名字
        /// 
        public string Name { get; set; }
    
        /// 
        /// 年龄
        /// 
        public int Age { get; set; }
    
        /// 
        /// 性别
        /// 
        /// 这里使用Bogus已经定义好的性别枚举类型
        public Name.Gender Gender { get; set; }
    
        /// 
        /// 公司
        /// 
        public string Company { get; set; }
    
        /// 
        /// 电话
        /// 
        public string Phone { get; set; }
    }
  5. Main方法中,我们使用Bogus提供的流式API为User定义生成规则:

    // 用户数据生成规则
    var fakerPerson = new Faker("zh_CN")                                      // 使用中文数据
            .RuleFor(p => p.Name, f => f.Name.FullName())                           // 随机汉字名
            .RuleFor(p => p.Age, f => f.Random.Number(1, 100))                      // 随机年龄(1-100岁)
            .RuleFor(p => p.Gender, f => f.PickRandom())               // 随机性别
            .RuleFor(p => p.Company, p => p.Company.CompanyName())                  // 随机公司名称
            .RuleFor(p => p.Phone, p => p.Phone.PhoneNumber("1##########"))         // 随机手机号
        ;

    可以看到,Bogus内置了多种数据集,如姓名,公司和电话等,可方便的生成各种类型的假数据.更多的数据集可查阅文档Bogus API Support

  6. 生成数据

    // 生成测试用户
    var person = fakerPerson.Generate();
  7. 使用Json.Net输出数据

    // 输出测试用户数据
    string json = JsonConvert.SerializeObject(person, Formatting.Indented);
    Console.WriteLine(json);

    输出结果:

    {
        "Name": "谢 擎宇",
        "Age": 39,
        "Gender": 0,
        "Company": "展鹏, 智宸 and 思",
        "Phone": "13691393533"
    }

类似库

  • MisterJames/GenFu

你可能感兴趣的:(【awesome-dotnet-core-learning】(3)-Bogus-假数据生成器)