はじめに
大量の(それっぽい)企業データがあったら良いなぁという状況があり、Mimesisというライブラリが便利だったので紹介します
対象
フロントエンジニア、テストデータを作成したい人、Pythonが好きな人
python3.6以上がインストールされていること
ゴール
インストール〜簡易的なJSONテストデータを出力できるまで
Mimesisとは
テストデータ作成ライブラリ
Fakerが有名のようだが、法人データ作成がないと思われた
Mimesisでは法人データが作成でき、かつちょっと変わったHomePageだとか
IPアドレスのようなデータも作成できるようなので、このライブラリを使用してデータを作成してみました
Mimesis公式
インストール
Mimesisのインストールはpipのみ
$ pip install Mimesis
pipってとても優秀なやつだと、毎回思います(コピペ)
Getting Started
簡単な使い方
import mimesis
# テストデータを日本語に設定
g = mimesis.Generic('ja')
# 会社名と法人タイプ
print("{0} {1}".format(g.business.company_type(), g.business.company()))
# homePage
print(g.internet.home_page())
起動&閲覧
ターミナルで
$ python main.py
株式会社 デンカ生研
https://bantay.moscow
なんとなくありそうな会社名じゃないでしょうか
JSONデータとして出力
せっかくなのでJSONのテストデータを作成してみます
(SwaggerにしろImportするにしろそのほうが便利なので)
ソース
先程のソースを
import json
from datetime import date, datetime
import mimesis
# 日付と数値のフォーマットを揃える(JSON出力時にはこれを用意しておくと便利)
def format_default(obj):
if isinstance(obj, datetime) or isinstance(obj, date):
return obj.isoformat()
if isinstance(obj, decimal.Decimal):
#小数部分が無ければIntで返す
if float(obj).is_integer():
return int(obj)
else:
return float(obj)
raise TypeError
# 複数件セットできるようにDictを準備
data = []
g = mimesis.Generic('ja')
# 複数件生成してDictにセット(必要件数分ここを変更
for idx, x in enumerate(range(0, 2)):
ins_data = {}
ins_data['company_id'] = idx # Id
ins_data['company_name'] = "株式会社 {0}".format(g.business.company()) # 会社名
ins_data['foundation_date'] = g.datetime.formatted_date("%Y/%m") # 設立年月日
ins_data['postal_code'] = g.address.postal_code() # 郵便番号
ins_data['state'] = g.address.state() # 都道府県
ins_data['city'] = g.address.city() # 〜市
ins_data['street'] = g.address.street_name() # 番地
ins_data['home_page'] = g.internet.home_page() # homepage
data.append(ins_data) # Dictに追加
# DictをJSONとしていい感じに整形して出力
print(json.dumps(data, default=format_default, indent=2, ensure_ascii=False))
$ python main.py
[
{
"company_id": 0,
"company_name": "株式会社 三菱UFJフィナンシャルグループ",
"foundation_date": "2003/08",
"postal_code": "559-9285",
"state": "秋田県",
"city": "松山市",
"street": "目黒",
"home_page": "https://trachytes.frl"
},
{
"company_id": 1,
"company_name": "株式会社 大丸",
"foundation_date": "2004/02",
"postal_code": "564-0918",
"state": "福島県",
"city": "太田市",
"street": "要町",
"home_page": "https://arvin.tui"
}
]
どうでしょう、見てるだけでも楽しい感じがしますね
あとはこんな感じで
$ ptyhon main.py > testData.json
テストデータ(JSON)を作成して、SwaggerやFrontのMock用データに利用しています
おまけ
最後に公式に書いてあることですがどんなデータを作成できるか紹介しておきます
(他にも使い所がわからないような面白いものもあるので
Random
idやamountなど
Address
countryやcityなど
Business
companyやcompany_typeなど
Datetime
daysやhoursなど
Food
drinkやvegetableなど (これ面白いですよね
Person
first_nameやemail, blood_typeなど
Text
alphabetやanswerなど
Development
osやversionなど
File
file_nameやmime_typeなど
Hardware
cpuやscreen_sizeなど
Internet
home_pageやhttp_method, ip_v4など
Numbers
complex_numberやintegers(start=0, end=10, n=10)など
Path
homeやrootなど
Path
homeやrootなど