LoginSignup
4

More than 5 years have passed since last update.

Pythonでtest用のdummy dataを作成する

Last updated at Posted at 2017-12-18

Faker

dummy data作成用のpython package.
pythonのmoduleとしても利用できるが、CLIからのdataの作成も可能。
以下でinstallできる。

pip install faker

Usage

from faker import Faker
# faker object
fake = Factory.create()
# set seed
fake.seed(4321)
# get dummy data
fake.name()
fake.address()
fake.text()

呼び出しごとにrandomにdataが出力される。
seedを固定したい場合は、fake.seed()で設定する。
dummy dataを生成するname, addressはproviderによって提供される。
自分でproviderを追加することもできる。

Providerの追加。

自分でproviderを作成する場合は以下のようにする。

# first, import a similar Provider or use the default one
from faker.providers import BaseProvider

# create new provider class
class MyProvider(BaseProvider):
    def foo(self):
        return 'bar'

# then add new provider to faker instance
fake.add_provider(MyProvider)

# now you can use:
fake.foo()

言語の変更

defaultは、英語。日本語などのdataもある。

from faker import Factory
fake = Factory.create('jp_JP')

List of providers

defaultで利用可能なProviderの一覧は以下にある。

List of dummy data

全て網羅していないが、どういうデータが使えるか
以下を実行すればデータが表示される。

from faker import Factory
fake = Factory.create()

print("")
print("lorem")
print(fake.word())
print(fake.words())
print(fake.sentence())
print(fake.sentences())
print(fake.paragraph())
print(fake.paragraphs())
print(fake.text())

print("")
print("user_agent")
print(fake.user_agent())
print(fake.chrome())
print(fake.firefox())
print(fake.safari())
print(fake.opera())
print(fake.internet_explorer())
print(fake.windows_platform_token())
print(fake.linux_platform_token())
print(fake.mac_platform_token())

print("")
print("misc")
print(fake.boolean())
print(fake.null_boolean())
print(fake.binary(length=50))
print(fake.md5())
print(fake.sha1())
print(fake.sha256())
print(fake.locale())
print(fake.language_code())
print(fake.uuid4())
print(fake.password())

with pytest

pytestと一緒に使う場合は、pytestのfixtureとして提供されているpytest-fixtureを使う。

pip install pytest-faker

fakerという名前の引数をtest用の関数に指定しておけばfake moduleとして使える。

def test_faker(faker):
    assert faker.name() != faker.address()

Reference

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4