Faker.Net 是一套專給 .NET / C# 使用的開源模擬測試資料產生函式庫,靈感來自 Ruby 的 Faker 生態,主要用來解決開發除錯、資料庫初始化、單元測試時,缺少大量擬真測試資料的問題。
專案位址:https://github.com/jonwingfield/Faker.Net
可快速產生各種貼近真實場景的假資料,常見資料類型包含:
- 個人資訊:姓名、性別、手機號碼、電子郵件、身分證字號
- 地理資訊:縣市、完整地址、郵遞區號
- 業務資料:公司名稱、職稱、文字摘要、日期時間
- 網路資訊:IP位址、網址、使用者名稱
批次在人員測試資料表匯入上百筆,姓名、性別、聯絡方式都不重複的紀錄,不用手動逐筆輸入。
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 隨機文字產生功能