jaswdr / faker

:rocket: Ultimate fake data generator for Go with zero dependencies
https://pkg.go.dev/github.com/jaswdr/faker
MIT License
566 stars 59 forks source link
contributions-welcome fake fake-data faker faker-generator go golang hacktoberfest hacktoberfest-accepted hacktoberfest2021 hacktoberfest2022 hacktoberfest2023 hacktoberfest2024 open-source

Faker is a Go library that generates fake data for you. Whether you need to bootstrap your database, create good-looking XML documents, fill-in your persistence to stress test it, or anonymize data taken from a production service, Faker is for you.

Faker is heavily inspired by PHP"s Faker

Faker requires Go >= 1.11 and < 1.20 for 1.X and Go >= 1.20 for 2.X

PkgGoDev Test codecov Go Report Card Codacy Badge CodeFactor Release Gitpod ready-to-code Hits

Test it directly from your browser

Start at https://play.golang.org/p/JpTagDGBaHK

Installation

Add this to your Go file

import "github.com/jaswdr/faker/v2"

And run go get or dep ensure to get the package.

Basic Usage

Use faker.New() to create and initialize a faker generator, which can generate data by accessing properties named after the type of data you want.

import "github.com/jaswdr/faker/v2"

func main() {
    fake := faker.New()

    fake.Person().Name()
    // Lucy Cechtelar

    fake.Address().Address()
    // 426 Jordy Lodge

    fake.Lorem().Text(100)
    // Dolores sit sint laboriosam dolorem culpa et autem. Beatae nam sunt fugit
    // et sit et mollitia sed.
    // Fuga deserunt tempora facere magni omnis. Omnis quia temporibus laudantium
    // sit minima sint.
}

Even if this example shows a method access, each call to fake.Name() yields a different (random) result.

p := fake.Person()

for i:=0; i < 10; i++ {
  fmt.Println(p.Name())
}
  // Adaline Reichel
  // Dr. Santa Prosacco DVM
  // Noemy Vandervort V
  // Lexi O"Conner
  // Gracie Weber
  // Roscoe Johns
  // Emmett Lebsack
  // Keegan Thiel
  // Wellington Koelpin II
  // Ms. Karley Kiehn V

You can also generate a profile image.

image := p.Image()

fmt.Println(image.Name())
// /tmp/profil-picture-img-1064677774.jfif

fmt.Printf("%+v", image)
// &{file:0xc0002e4300}

Generate fake data using Structs

type ExampleStruct struct {
    SimpleStringField string
    SimpleNumber int
    SimpleBool bool
    SomeFormatedString string `fake:"??? ###"`
    SomeStringArray [5]string `fake:"????"`
}

example := ExampleStruct{}
f.Struct().Fill(&example)
fmt.Printf("%+v", example)
//{SimpleStringField:87576a01c2a547b2bbf9b7c736d1db40 SimpleNumber:9223372036854775807 SimpleBool:false SomeFormatedString:cxo 321 SomeStringArray:[effr swxp ldnj obcs nvlg]}

Generate random placeholder images using LoremFlickr

// get a *os.File pointing to a file that is a random image
image := f.LoremFlickr().Image(100, 100, []string{}, "", false)

fmt.Println(image.Name())
// /tmp/loremflickr-img-4101493944.jpg

Generate profile images using ThisPersonDoesNotExist

profileImage := f.ProfileImage().Image()

fmt.Println(profileImage.Name())
// /tmp/profil-picture-img-4022222298.jfif

See more formatters in docs

Development

Create a fork and get the code.

$ go get github.com/jaswdr/faker/v2

Do your changes, add tests, run the tests.

$ go test
PASS
ok      github.com/jaswdr/faker/v2 2.966s

Push to your fork and send a new pull request from your fork to this repository.

Versioning

Faker is maintained under the Semantic Versioning guidelines. Starting at 2.X, we only support maintained versions of Go. Which according to Go's Release Policy means that we only support the two newer major versions.

License

Faker is released under the MIT Licence. See the bundled LICENSE file for details.

Maintainer

Created and maitained by Jonathan Schweder (@jaswdr) and many others