Pythonメモ : fakerでテストデータを生成する
faker
fakerというPythonパッケージを使用するとテストデータを簡単に生成することができる。PHP Faker, Perl Faker, Ruby Fakerにインスパイアされたとのこと。
インストール
pipでインストールできるので下記コマンドを実行。
$ pip install faker
$ faker --help usage: faker [-h] [--version] [-o output] [-l LOCALE] [-r REPEAT] [-s SEP] [-i [INCLUDE [INCLUDE ...]]] [fake] [fake argument [fake argument ...]] faker version 0.7.18 positional arguments: fake name of the fake to generate output for (e.g. profile) fake argument optional arguments to pass to the fake (e.g. the profile fake takes an optional list of comma separated field names as the first argument) optional arguments: -h, --help show this help message and exit --version show program's version number and exit -o output redirect output to a file -l LOCALE, --lang LOCALE specify the language for a localized provider (e.g. de_DE) -r REPEAT, --repeat REPEAT generate the specified number of outputs -s SEP, --sep SEP use the specified separator after each output -i [INCLUDE [INCLUDE ...]], --include [INCLUDE [INCLUDE ...]] list of additional custom providers to user, given as the import path of the module containing your Provider class (not the provider class itself) supported locales: bg_BG, bs_BA, cs_CZ, de_AT, de_DE, dk_DK, el_GR, en, en_AU, en_CA, en_GB, en_TH, en_US, es, es_ES, es_MX, fa_IR, fi_FI, fr_CH, fr_FR, hi_IN, hr_HR, hu_HU, it_IT, ja_JP, ko_KR, la, lt_LT, lv_LV, ne_NP, nl_BE, nl_NL, no_NO, pl_PL, pt_BR, pt_PT, ru_RU, sk_SK, sl_SI, sv_SE, th_TH, tr_TR, uk_UA, zh_CN, zh_TW
使い方:コマンド
インストールが成功していればfaker
コマンドが使えるようになっている。
基本的にはfaker
の後に生成したいデータを指定する。
$ faker address 福岡県利島村白金台7丁目8番5号 アーバン長間949
-l
でロケールを指定することも可能。
$ faker -l de_DE address Rainer-Weinhage-Ring 9/3 88040 Peine
データによっては使用する属性だけを指定することも可能。
$ faker profile {'name': '木村 知実', 'company': '有限会社 井高', 'ssn': '074-74-2984', 'website': ['https://miyake.jp/'], 'birthdate': '2017-02-01', 'current_location': (Decimal('23.967602'), Decimal('-162.041080')), 'residence': '大阪府横浜市戸塚区湯宮25丁目17番1号 パレス津久戸町909', 'job': 'Investment analyst', 'mail': 'fujimotokumiko@gmail.com', 'sex': 'F', 'address': '静岡県江東区藤金10丁目27番14号 太田ヶ谷クレスト103', 'username': 'kimuratakuma', 'blood_group': 'A-'} $ faker profile ssn,birthdate {'birthdate': '2002-07-30', 'ssn': '317-80-6184'}
複数生成する場合は-r
で数値を指定する。-s
はセパレータを指定するオプション。
$ faker -r=3 -s=";" name 吉田 涼平; 高橋 真綾; 村山 聡太郎;
生成可能なデータの一覧は下記リンクで確認できる。
Language ja_JP — Faker 0.7.18 documentation
または下記コマンドを実行する。
$ python -m faker ### faker.providers.address fake.random_sample(elements=('a', 'b', 'c'), length=None) # ['c'] fake.zipcode() # 133-3925 fake.country_code() # NZ fake.address() # 岐阜県あきる野市三ノ輪19丁目5番5号 パレス外国府間417 fake.street_suffix() # Street …省略…
使い方:コード
インポートと初期化は下記コードを参照。
from faker import Factory fake = Factory.create('ja_JP') # または from faker import Faker fake = Faker('ja_JP')
後はfake.name()
のように生成したいデータを指定すればよい。
追記:mimesisを使う方法もある。
wonderwall.hatenablog.com