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