大佬教程收集整理的这篇文章主要介绍了不一样的虚假(Bogus)和骗子(Faker),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
首先声明,Bogus是一个Nuget包的名称,Faker是它内部的一个类,这个库的作用就是模拟生成实体类的数据,特别适合测试时的场景,不用苦思冥想,辛辛苦苦来造不同的实体类了。当然,造出来的都是虚假的(Bogus),骗人的(Faker)。它家在这里:https://github.com/bchavez/Bogus
假如我有个会员类
enum Sex
{
男,
女
}
class Memmber
{
public Guid ID { get; set; }
public long NO { get; set; }
public String Name { get; set; }
public Sex Sex { get; set; }
public int Age { get; set; }
public String Email { get; set; }
public String Phone { get; set; }
public decimal Balance { get; set; }
public datetiR_846_11845@e CreateOn { get; set; }
}
这个类在测试时,要手动实例化,穿梭于各个层和方法中间,现在把构建这个类的对象(实例),交给Bogus。
首先引入Bogus包
Install-Package Bogus
接下来就可以告诉Faker怎么来“骗人”了
var options = new JsonserializerOptions();
options.Encoder = System.Text.Encodings.Web.JavaScriptEncoder.Create(UnicodeRanges.All);
while (true)
{
var personFaker = new Faker<Memmber>()
.RuleFor(x => x.ID, x => x.Random.Guid())
.RuleFor(x=>x.NO,x=>x.Random.Long(100000000000,999999999999))
.RuleFor(x => x.Name, x => x.Person.LastName + x.Person.FirstName)
.RuleFor(x => x.Sex, x => x.Random.Enum<Sex>())
.RuleFor(x => x.Email, x => x.Person.Email)
.RuleFor(x => x.Phone, x => x.Person.PhonE)
.RuleFor(x => x.Age, x => x.Random.Int(0, 120))
.RuleFor(x=>x.balance,x=>x.Finance.amount(0,1000))
.RuleFor(x => x.CreateOn, x => x.Date.Past(1));
Console.WriteLine(Jsonserializer.serialize(personFaker.Generate(), options));
Console.ReadLine();
}
看一下效果:
{ "ID":"5f3d97f6-52da-7fb6-e73f-153fd3a41bfb", "NO":539140308276, "Name":"KoeppErick", "Sex":0, "Age":48, "Email":"Erick.Koepp@hotmail.com", "@H_593_191@phone":"(899) 392-6546", "Balance":45.34, "CreateOn":"2021-02-14T13:32:19.892062+09:00" }
看来,Faker是通过RuleFor来给每个属性来模拟那种格式的数据的,比如ruleFor(x => x.Email, x => x.Person.Email),告诉Faker,这是一个Email格式,记得骗人的时候,给人家一个email格式的数据,内容随便你,那问题来了,是不是有一大组格式呢?当然,这也是这个库的作用,都有哪些?
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.
StreetSuffix
- Get a street suffix.
SecondaryAddress
- Get a secondary address like 'Apt. 2' or 'Suite 321'.
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: North@R_450_9752@, South, SW, E.
CardinalDirection
- Generates a cardinal direction. IE: North, South, E, W.
OrdinalDirection
- Generates an ordinal direction. IE: North@R_450_9752@, 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.
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
Type
- Generates a column type.
Collation
- Generates a collation.
Date
Past
- Get a datetiR_846_11845@e
in the past between refDate
and yearsToGoBACk
.
PastOffset
- Get a datetiR_846_11845@eOffset
in the past between refDate
and yearsToGoBACk
.
Soon
- Get a datetiR_846_11845@e
that will happen soon.
SoonOffset
- Get a datetiR_846_11845@eOffset
that will happen soon.
Future
- Get a datetiR_846_11845@e
in the future between refDate
and yearsToGoForWARD
.
FutureOffset
- Get a datetiR_846_11845@eOffset
in the future between refDate
and yearsToGoForWARD
.
between
- Get a random datetiR_846_11845@e
between start
and end
.
betweenOffset
- Get a random datetiR_846_11845@eOffset
between start
and end
.
Recent
- Get a random datetiR_846_11845@e
within the last few days.
RecentOffset
- Get a random datetiR_846_11845@eOffset
within the last few days.
Timespan
- Get a random TimeSpan
.
@H_92_325@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..
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.
Noun
- Returns a noun.
Verb
- Returns a verb.
IngVerb
- Returns a verb ending with -ing.
Phrase
- Returns a phrase.
Images
Abstract
- Gets an abstract looking image.
Animals
- Gets an image of an animal.
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.
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.
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, .org
Ip
- Gets a random IPv4 address String.
Port
- Generates a random port number.
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.
Color
- Gets a random aesthetically pleasing color near the base RGB. See here.
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.
Text
- Get random text on a random lorem methods.
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.
JobDescriptor
- Get a job description.
JobArea
- Get a job area expertise.
JobType
- Get a type of job.
@H_92_325@phone
@H_92_325@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.
@H_92_325@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 random Version
.
Exception
- Get a random Exception
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).
@H_92_325@manufacturer - Get a vehicle manufacture name. IE: Toyota, Ford, Porsche.
@H_92_325@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.
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.
String2
- Get a String of characters with a specific length drawing characters from chars
.
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.
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.
WeightedRandom<T>
- Returns a SELEction of T[] based on a weighted diStribution of probability.
是不是挺丰富的,一般场景应该够用了,如果有特殊数据模拟,也只能自已动手了。
对,我是一个祖国的程序员,Member类生成的实例是外国的,这不行,换一下:
var options = new JsonserializerOptions();
options.Encoder = System.Text.Encodings.Web.JavaScriptEncoder.Create(UnicodeRanges.All);
while (true)
{
var personFaker = new Faker<Memmber>("zh_CN")
.RuleFor(x => x.ID, x => x.Random.Guid())
.RuleFor(x=>x.NO,x=>x.Random.Long(100000000000,999999999999))
.RuleFor(x => x.Name, x => x.Person.LastName + x.Person.FirstName)
.RuleFor(x => x.Sex, x => x.Random.Enum<Sex>())
.RuleFor(x => x.Email, x => x.Person.Email)
.RuleFor(x => x.Phone, x => x.Person.PhonE)
.RuleFor(x => x.Age, x => x.Random.Int(0, 120))
.RuleFor(x=>x.balance,x=>x.Finance.amount(0,1000))
.RuleFor(x => x.CreateOn, x => x.Date.Past(1));
Console.WriteLine(Jsonserializer.serialize(personFaker.Generate(), options));
Console.ReadLine();
}
只需要在New Faker<T>时告这个骗子是要骗祖国的程序,就可以了,看结果吧:
{ "ID":"219d56ca-ea21-3a02-84b5-d9950ae8f384", "NO":362783628351, "Name":"徐思远", "Sex":0, "Age":100, "Email":"40@gmail.com", "@H_593_191@phone":"024-65735687", "Balance":623.22, "CreateOn":"2021-01-19T19:38:30.1504231+09:00" }
其中的名字还真像个真人名,电话号也换成祖国的了。
那还支持其他国家吗?当然
Locale Code |
Language |
Locale Code |
Language |
|
af_ZA |
Afrikaans |
fr_CH |
French (Switzerland) |
|
ar |
Arabic |
ge |
Georgian |
|
az |
Azerbaijani |
hr |
Hrvatski |
|
cz |
Czech |
id_ID |
Indonesia |
|
de |
GeRMAN |
it |
Italian |
|
de_AT |
ja |
Japanese |
||
de_CH |
GeRMAN (Switzerland) |
ko |
Korean |
|
el |
Greek |
lv |
Latvian |
|
en |
English |
nb_NO |
Norwegian |
|
en_AU |
English (Australia) |
ne |
Nepalese |
|
en_AU_ocker |
English (Australia Ocker) |
nl |
Dutch |
|
en_BORK |
English (Bork) |
nl_BE |
Dutch (Belgium) |
|
en_CA |
English (Canada) |
pl |
Polish |
|
en_GB |
English (Great Britain) |
pT_BR |
Portuguese (Brazil) |
|
en_IE |
English (Ireland) |
pt_PT |
Portuguese (Portugal) |
|
en_IND |
English (India) |
ro |
Romanian |
|
en_NG |
Nigeria (English) |
ru |
Russian |
|
en_US |
English (United States) |
sk |
Slovakian |
|
en_ZA |
English (South Africa) |
sv |
Swedish |
|
es |
Spanish |
tr |
Turkish |
|
es_MX |
Spanish (Mexico) |
uk |
Ukrainian |
|
fa |
Farsi |
vi |
Vietnamese |
|
fi |
Finnish |
zh_CN |
Chinese |
|
fr |
French |
zh_TW |
Chinese (Taiwan) |
|
fr_CA |
French (Canada) |
zu_ZA |
Zulu (South Africa) |
其实还有Bogus有很多其他功能,大家可以自行探索。
以上是大佬教程为你收集整理的不一样的虚假(Bogus)和骗子(Faker)全部内容,希望文章能够帮你解决不一样的虚假(Bogus)和骗子(Faker)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。