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

    // 用户数据生成规则
    var fakerPerson = new Faker<User>("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<Name.Gender>()) // 随机性别
    .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"
    }

类似库

【awesome-dotnet-core-learning】(3)-Bogus-假数据生成器的更多相关文章

  1. MongoDB via Dotnet Core数据映射详解

    用好数据映射,MongoDB via Dotnet Core开发变会成一件超级快乐的事.   一.前言 MongoDB这几年已经成为NoSQL的头部数据库. 由于MongoDB free schema ...

  2. 数据生成器Bogus的使用以及基于声明的扩展

    引言 最近在整理代码,发现以前写的一个数据填充器写了一半没实现,而偏偏这段时间就要用到类似的功能,所以正好实现下. 目标 这个工具的目标是能够在项目初期快速搭建一个"数据提供器", ...

  3. dotnet core 使用 MongoDB 进行高性能Nosql数据库操作

    好久没有写过Blog, 每天看着开源的Java社区流口水, 心里满不是滋味. 终于等到了今年六月份 dotnet core 的正式发布, 看着dotnet 社区也一步一步走向繁荣, 一片蒸蒸日上的大好 ...

  4. dotnet core开发体验之开始MVC

    开始 在上一篇文章:dotnet core多平台开发体验 ,体验了一把dotnet core 之后,现在想对之前做的例子进行改造,想看看加上mvc框架是一种什么样的体验,于是我就要开始诞生今天的这篇文 ...

  5. dotnet core多平台开发体验

    前言 随着net core rc2的发布,园子里面关于net core的入门文章也也多了起来,但是大多数都是在一个平台上面来写几个简单的例子,或者是在解释代码本身,并没有体现说在一个平台上面创建一个项 ...

  6. 基于DotNet Core的RPC框架(一) DotBPE.RPC快速开始

    0x00 简介 DotBPE.RPC是一款基于dotnet core编写的RPC框架,而它的爸爸DotBPE,目标是实现一个开箱即用的微服务框架,但是它还差点意思,还仅仅在构思和尝试的阶段.但不管怎么 ...

  7. 将app接口服务器改为dotnet core承载

    昨天我的一个 app 的接口服务器挂掉了,国外的小鸡意外的翻车,连同程序和数据一起,猝不及防.我的服务端程序是 asp.net mvc ,小鸡是 256 M 的内存跑不了 windows 系统,装的 ...

  8. spring cloud+dotnet core搭建微服务架构:Api网关(三)

    前言 国庆假期,一直没有时间更新. 根据群里面的同学的提问,强烈推荐大家先熟悉下spring cloud.文章下面有纯洁大神的spring cloud系列. 上一章最后说了,因为服务是不对外暴露的,所 ...

  9. spring cloud+dotnet core搭建微服务架构:配置中心(四)

    前言 我们项目中有很多需要配置的地方,最常见的就是各种服务URL地址,这些地址针对不同的运行环境还不一样,不管和打包还是部署都麻烦,需要非常的小心.一般配置都是存储到配置文件里面,不管多小的配置变动, ...

随机推荐

  1. mybatis进阶-5resultMap总结

    resultType: 作用: 将查询结果按照sql列名pojo属性名一致性映射到pojo中. 场合: 常见一些明细记录的展示,比如用户购买商品明细,将关联查询信息全部展示在页面时,此时可直接使用re ...

  2. AX_Currency

    Currency::curAmount(9.23,"HKD");  Currency::curAmount2CurAmount(9.23,"RMB"," ...

  3. 无线网卡连接网络后共享给本地有线网卡使用(Win10)

    无线网卡连接网络后共享给本地有线网卡使用(Win10) 1. 本文主要目的是介绍地有线网卡共享无线网卡的Wifi信号,该应用场景如下: 当在只有wifi环境下,同时有两台电脑A和B,   A为笔记本: ...

  4. LOJ-10105(欧拉回路模板,套圈法,递归)

    题目链接:传送门 思路: (1)用邻接表存储有向图和无向图,有向图和无向图的每条边均站两个单元,无向图有正向边和反向边的区分. (2)有向图有欧拉回路:所有点的入度=出度: 无向图有欧拉回路:所有点的 ...

  5. JavaScript基础视频教程总结(031-040章)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  6. HTML学习总结(作业五)

    1:HTML简介 超文本标记语言,标准通用标记语言下的一个应用.是 网页制作必备的编程语言“超文本”就是指页面内可以包含图片.链接,甚至音乐.程序等非文字元素.超文本标记语言的结构包括“头”部分(英语 ...

  7. electron、vue.js、vuex、element-ui、sqlite3

    总结一下这两周的入门之路. 1.安装node.js 过程就是下载:https://nodejs.org/en/,安装,完了在命令行窗口,在任何目录下都可录入node -v应能看到类似反馈 如果提示&q ...

  8. python 在unix下json格式显示结果

    在使用命令号输出接口测试结果,发现无法按照期望的json格式进行显示.查阅资料发现python自带强大的工具. 直接上代码: import os,requests url = XXXXXX conte ...

  9. ASP.NET Core 统一异常处理和返回

    业务场景: 业务需求要求,需要对 ASP.NET Core 异常进行统一处理和返回,比如出现 500 错误和业务服务错误进行不同的处理和返回. 具体实现: using Microsoft.AspNet ...

  10. 【设计经验】1、Verilog中如何规范的处理inout信号

    在FPGA的设计过程中,有时候会遇到双向信号(既能作为输出,也能作为输入的信号叫双向信号).比如,IIC总线中的SDA信号就是一个双向信号,QSPI Flash的四线操作的时候四根信号线均为双向信号. ...