https://github.com/bchavez/Bogus
public enum Gender
{
Male,
Female
}
//Set the randomizer seed if you wish to generate repeatable data sets.
Randomizer.Seed = new Random(8675309);
var fruit = new[] { "apple", "banana", "orange", "strawberry", "kiwi" };
var orderIds = 0;
var testOrders = new Faker<Order>()
//Ensure all properties have rules. By default, StrictMode is false
//Set a global policy by using Faker.DefaultStrictMode
.StrictMode(true)
//OrderId is deterministic
.RuleFor(o => o.OrderId, f => orderIds++)
//Pick some fruit from a basket
.RuleFor(o => o.Item, f => f.PickRandom(fruit))
//A random quantity from 1 to 10
.RuleFor(o => o.Quantity, f => f.Random.Number(1, 10))
//A nullable int? with 80% probability of being null.
//The .OrNull extension is in the Bogus.Extensions namespace.
.RuleFor(o => o.LotNumber, f => f.Random.Int(0, 100).OrNull(f, .8f));
var userIds = 0;
var testUsers = new Faker<User>()
//Optional: Call for objects that have complex initialization
.CustomInstantiator(f => new User(userIds++, f.Random.Replace("###-##-####")))
//Use an enum outside scope.
.RuleFor(u => u.Gender, f => f.PickRandom<Gender>())
//Basic rules using built-in generators
.RuleFor(u => u.FirstName, (f, u) => f.Name.FirstName(u.Gender))
.RuleFor(u => u.LastName, (f, u) => f.Name.LastName(u.Gender))
.RuleFor(u => u.Avatar, f => f.Internet.Avatar())
.RuleFor(u => u.UserName, (f, u) => f.Internet.UserName(u.FirstName, u.LastName))
.RuleFor(u => u.Email, (f, u) => f.Internet.Email(u.FirstName, u.LastName))
.RuleFor(u => u.SomethingUnique, f => $"Value {f.UniqueIndex}")
//Use a method outside scope.
.RuleFor(u => u.CartId, f => Guid.NewGuid())
//Compound property with context, use the first/last name properties
.RuleFor(u => u.FullName, (f, u) => u.FirstName + " " + u.LastName)
//And composability of a complex collection.
.RuleFor(u => u.Orders, f => testOrders.Generate(3).ToList())
//Optional: After all rules are applied finish with the following action
.FinishWith((f, u) =>
{
Console.WriteLine("User Created! Id={0}", u.Id);
});
var user = testUsers.Generate();
Console.WriteLine(user.DumpAsJson());
/* OUTPUT:
User Created! Id=0
*
{
"Id": 0,
"FirstName": "Audrey",
"LastName": "Spencer",
"FullName": "Audrey Spencer",
"UserName": "Audrey_Spencer72",
"Email": "Audrey82@gmail.com",
"Avatar": "https://s3.amazonaws.com/uifaces/faces/twitter/itstotallyamy/128.jpg",
"CartId": "863f9462-5b88-471f-b833-991d68db8c93",
"SSN": "923-88-4231",
"Gender": 0,
"Orders": [
{
"OrderId": 0,
"Item": "orange",
"Quantity": 8
},
{
"OrderId": 1,
"Item": "banana",
"Quantity": 2
},
{
"OrderId": 2,
"Item": "kiwi",
"Quantity": 9
}
]
} */
Address
ZipCode
- Get a zipcode.City
- Get a city name.StreetAddress
- Get a street address.CityPrefix
- Get a city prefix.CitySuffix
- Get a city suffix.StreetName
- Get a street name.BuildingNumber
- Get a building number.StreetSuffix
- Get a street suffix.SecondaryAddress
- Get a secondary address like 'Apt. 2' or 'Suite 321'.County
- Get a county.Country
- Get a country.FullAddress
- Get a full address like Street, City, Country.CountryCode
- Get a random ISO 3166-1 country code.State
- Get a random state state.StateAbbr
- Get a state abbreviation.Latitude
- Get a Latitude.Longitude
- Get a Longitude.Direction
- Generates a cardinal or ordinal direction. IE: Northwest, South, SW, E.CardinalDirection
- Generates a cardinal direction. IE: North, South, E, W.OrdinalDirection
- Generates an ordinal direction. IE: Northwest, Southeast, SW, NE.
Commerce
Department
- Get a random commerce department.Price
- Get a random product price.Categories
- Get random product categories.ProductName
- Get a random product name.Color
- Get a random color.Product
- Get a random product.ProductAdjective
- Random product adjective.ProductMaterial
- Random product material.Ean8
- Get a random EAN-8 barcode number.Ean13
- Get a random EAN-13 barcode number.
Company
CompanySuffix
- Get a company suffix. "Inc" and "LLC" etc.CompanyName
- Get a company name.CatchPhrase
- Get a company catch phrase.Bs
- Get a company BS phrase.
Database
Column
- Generates a column name.Type
- Generates a column type.Collation
- Generates a collation.Engine
- Generates a storage engine.
Date
Past
- Get aDateTime
in the past betweenrefDate
andyearsToGoBack
.PastOffset
- Get aDateTimeOffset
in the past betweenrefDate
andyearsToGoBack
.Soon
- Get aDateTime
that will happen soon.SoonOffset
- Get aDateTimeOffset
that will happen soon.Future
- Get aDateTime
in the future betweenrefDate
andyearsToGoForward
.FutureOffset
- Get aDateTimeOffset
in the future betweenrefDate
andyearsToGoForward
.Between
- Get a randomDateTime
betweenstart
andend
.BetweenOffset
- Get a randomDateTimeOffset
betweenstart
andend
.Recent
- Get a randomDateTime
within the last few days.RecentOffset
- Get a randomDateTimeOffset
within the last few days.Timespan
- Get a randomTimeSpan
.Month
- Get a random month.Weekday
- Get a random weekday.
Finance
Account
- Get an account number. Default length is 8 digits.AccountName
- Get an account name. Like "savings", "checking", "Home Loan" etc..Amount
- Get a random amount. Default 0 - 1000.TransactionType
- Get a transaction type: "deposit", "withdrawal", "payment", or "invoice".Currency
- Get a random currency.CreditCardNumber
- Generate a random credit card number with valid Luhn checksum.CreditCardCvv
- Generate a credit card CVV.BitcoinAddress
- Generates a random Bitcoin address.EthereumAddress
- Generate a random Ethereum address.RoutingNumber
- Generates an ABA routing number with valid check digit.Bic
- Generates Bank Identifier Code (BIC) code.Iban
- Generates an International Bank Account Number (IBAN).
Hacker
Abbreviation
- Returns an abbreviation.Adjective
- Returns a adjective.Noun
- Returns a noun.Verb
- Returns a verb.IngVerb
- Returns a verb ending with -ing.Phrase
- Returns a phrase.
Images
DataUri
- Get a SVG data URI image with a specific width and height.PicsumUrl
- Get an image from the https://picsum.photos service.PlaceholderUrl
- Get an image from https://placeholder.com service.LoremFlickrUrl
- Get an image from https://loremflickr.com service.LoremPixelUrl
- Creates an image URL with http://lorempixel.com. Note: This service is slow. Consider using PicsumUrl() as a faster alternative.Abstract
- Gets an abstract looking image.Animals
- Gets an image of an animal.Business
- Gets a business looking image.Cats
- Gets a picture of a cat.City
- Gets a city looking image.Food
- Gets an image of food.Nightlife
- Gets an image with city looking nightlife.Fashion
- Gets an image in the fashion category.People
- Gets an image of humans.Nature
- Gets an image of nature.Sports
- Gets an image related to sports.Technics
- Get a technology related image.Transport
- Get a transportation related image.
Internet
Avatar
- Generates a legit Internet URL avatar from twitter accounts.Email
- Generates an email address.ExampleEmail
- Generates an example email with @example.com.UserName
- Generates user names.UserNameUnicode
- Generates a user name preserving Unicode characters.DomainName
- Generates a random domain name.DomainWord
- Generates a domain word used for domain names.DomainSuffix
- Generates a domain name suffix like .com, .net, .orgIp
- Gets a random IPv4 address string.Port
- Generates a random port number.IpAddress
- Gets a random IPv4 IPAddress type.IpEndPoint
- Gets a random IPv4 IPEndPoint.Ipv6
- Generates a random IPv6 address string.Ipv6Address
- Generate a random IPv6 IPAddress type.Ipv6EndPoint
- Gets a random IPv6 IPEndPoint.UserAgent
- Generates a random user agent.Mac
- Gets a random mac address.Password
- Generates a random password.Color
- Gets a random aesthetically pleasing color near the base RGB. See here.Protocol
- Returns a random protocol. HTTP or HTTPS.Url
- Generates a random URL.UrlWithPath
- Get an absolute URL with random path.UrlRootedPath
- Get a rooted URL path like: /foo/bar. Optionally with file extension.
Lorem
Word
- Get a random lorem word.Words
- Get an array of random lorem words.Letter
- Get a character letter.Sentence
- Get a random sentence of specific number of words.Sentences
- Get some sentences.Paragraph
- Get a paragraph.Paragraphs
- Get a specified number of paragraphs.Text
- Get random text on a random lorem methods.Lines
- Get lines of lorem.Slug
- Slugify lorem words.
Name
FirstName
- Get a first name. Getting a gender specific name is only supported on locales that support it.LastName
- Get a last name. Getting a gender specific name is only supported on locales that support it.FullName
- Get a full name, concatenation of calling FirstName and LastName.Prefix
- Gets a random prefix for a name.Suffix
- Gets a random suffix for a name.FindName
- Gets a full name.JobTitle
- Gets a random job title.JobDescriptor
- Get a job description.JobArea
- Get a job area expertise.JobType
- Get a type of job.
Phone
PhoneNumber
- Get a phone number.PhoneNumberFormat
- Gets a phone number based on the locale's phone_number.formats[] array index.
Rant
Review
- Generates a random user review.Reviews
- Generate an array of random reviews.
System
FileName
- Get a random file name.DirectoryPath
- Get a random directory path (Unix).FilePath
- Get a random file path (Unix).CommonFileName
- Generates a random file name with a common file extension.MimeType
- Get a random mime type.CommonFileType
- Returns a commonly used file type.CommonFileExt
- Returns a commonly used file extension.FileType
- Returns any file type available as mime-type.FileExt
- Gets a random extension for the given mime type.Semver
- Get a random semver version string.Version
- Get a randomVersion
.Exception
- Get a randomException
with a fake stack trace.AndroidId
- Get a random GCM registration ID.ApplePushToken
- Get a random Apple Push Token.BlackBerryPin
- Get a random BlackBerry Device PIN.
Vehicle
Vin
- Generate a vehicle identification number (VIN).Manufacturer
- Get a vehicle manufacture name. IE: Toyota, Ford, Porsche.Model
- Get a vehicle model. IE: Camry, Civic, Accord.Type
- Get a vehicle type. IE: Minivan, SUV, Sedan.Fuel
- Get a vehicle fuel type. IE: Electric, Gasoline, Diesel.
Random
/Randomizer
Number
- Get an int from 0 to max.Digits
- Get a random sequence of digits.Even
- Returns a random even number.Odd
- Returns a random odd number.Double
- Get a random double, between 0.0 and 1.0.Decimal
- Get a random decimal, between 0.0 and 1.0.Float
- Get a random float, between 0.0 and 1.0.Byte
- Generate a random byte between 0 and 255.Bytes
- Get a random sequence of bytes.SByte
- Generate a random sbyte between -128 and 127.Int
- Generate a random int between MinValue and MaxValue.UInt
- Generate a random uint between MinValue and MaxValue.ULong
- Generate a random ulong between -128 and 127.Long
- Generate a random long between MinValue and MaxValue.Short
- Generate a random short between MinValue and MaxValue.UShort
- Generate a random ushort between MinValue and MaxValue.Char
- Generate a random char between MinValue and MaxValue.Chars
- Generate a random chars between MinValue and MaxValue.String
- Get a string of characters of a specific length.String2
- Get a string of characters with a specific length drawing characters fromchars
.Hash
- Return a random hex hash. Default 40 characters, aka SHA-1.Bool
- Get a random boolean.ArrayElement<T>
- Get a random array element.ArrayElement
- Get a random array element.ArrayElements<T>
- Get a random subset of an array.ListItem<T>
- Get a random list item.ListItems<T>
- Get a random subset of a List.CollectionItem<T>
- Get a random collection item.ReplaceNumbers
- Replaces symbols with numbers.ReplaceSymbols
- Replaces each character instance in a string.Replace
- Replaces symbols with numbers and letters. # = number, ? = letter, * = number or letter.ClampString
- Clamps the length of a string between min and max characters.Enum<T>
- Picks a random Enum of T. Works only with Enums.Shuffle<T>
- Shuffles an IEnumerable source.Word
- Returns a single word or phrase in English.Words
- Gets some random words and phrases in English.WordsArray
- Get a range of words in an array (English).Guid
- Get a random GUID.Uuid
- Get a random GUID. Alias for Randomizer.Guid().RandomLocale
- Returns a random locale.AlphaNumeric
- Returns a random set of alpha numeric characters 0-9, a-z.Hexadecimal
- Generates a random hexadecimal string.WeightedRandom<T>
- Returns a selection of T[] based on a weighted distribution of probability.