はじめに
大量の(それっぽい)企業データがあったら良いなぁという状況があり、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など