test-data-printer
テストデータの自動生成ツールです。 式言語風にデータ型を指定すると、それっぽいデータを吐き出してくれます。
${flower}${choice("商事,株式会社,グループ".split(","))}
↓↓
さくらグループ
ラベンダー株式会社
アネモネ商事
・・・
why this?
ダミー生成ツールは世にたくさんありますが、 生成したデータをDBに入れるための整形が手間でしかたない!という時に。
- EDMファイルからの列定義取得
- 式言語でのダミーデータ指定
ができます。
requirements
install
npm install test-data-printer -g
quick start
step1
EDMファイルをもとにして、ダミーデータ指定のためのseedファイルを作成します。 seedファイルはテーブルの数だけ作成されます。
EDMを使っていない場合は、こちらを参考にして、 seedファイルを手作成してください。
tdprint seed <edm_file_path> <seed_dir_path>
step2
自動生成されたseedファイルに、ダミーデータの指定を書き込みます。
各列にどのようなデータを入れるかを、埋め込みます。 ${}の中に自由にJavaScriptを埋め込めます。 個人情報などのダミーデータは事前に変数・関数として用意されています。
vi <seed_file_path>
/** example **/ Object.prototype.repeat = module.exports = .repeat, //データ件数 //データ定義はハッシュでも配列でも渡せます。 ['${padZero(rownum, 4)}', '${name.first()}', '${postal.joiner("");}', '${address.prefecture()}', '${address.remain()}'], //既存のCSVデータと統合したい場合の例。 "k01234,山田塾,114-0016,東京都荒川区東日暮里,駅の裏の方,急成長中".split, "k01235,田中センター,275-0026,千葉県習志野市谷津,その辺,老舗".split ] };
step3
seedファイルからCSVを生成します。
tdprint csv <seed_dir_path> <out_dir_path>
functions
組み込み式の中で使える変数・関数の一覧です。
"${rownum}" //行番号 /** 日付 **/ "${now}" //現在時刻 "${now.format('yyyy/mm/dd HH:MM:ss')}" //日付(フォーマット指定) "${new Date().addYear(3).addMonth(1).addDay(1)}" //現在から三年と二ヶ月と一日後の日付 /** ダミーデータ **/ "${name.last()}" //姓 "${name.first()}" //名 "${name.last().kana()}" //セイ "${name.first().kana()}" //メイ "${gender}" //性別 "${age}" //年齢 "${email}" //Email "${postal}" //郵便番号 "${postal.parent()}-${postal.branch()}" //郵便番号(上下個別指定) "${address}" //住所 "${address.prefecture()}" //都道府県 "${address.detail()}" //以降の住所 "${address.other()}" //マンション名等 "${address.prefecture().kana()}" //都道府県カナ "${birthday}" //誕生日 "${birthday.joiner('-')}" //誕生日(ハイフンつながり) "${birthday.year}${birthday.month}${birthday.day}" //誕生日(年月日個別) "${tel}" //電話番号 "${tel[0]}-${tel[1]}-${tel[2]}" //電話番号(ハイフンつながり) "${password}" //パスワード "${account}" //アカウント "${animal}" //動物の名前 "${vegetable}" //野菜の名前 "${flower}" //花の名前 "${fruit}" //果物の名前 "${color}" //色の名前 "${atom}" //原子の名前 "${sport}" //スポーツの名前 "${star}" //星の名前 "${cocktail}" //カクテルの名前 "${supernatural}" //妖怪の名前 "${text.length(120)}" //適当な文章。length()メソッドの引数で文字数を指定する。 /** 関数 **/ "${choice('A','B','C')}" //ランダムに選ぶ "${toHiragana('カタカナへ')}" //カタカナへ変換 "${toHiragana('ひらがなへ')}" //ひらがなへ変換 "${toRomaji('ローマジへ')}" //ローマ字へ変換 "${padZero(12, 5)}" //ゼロ埋め(左の例は'00012'となる) "${randomInt(0, 100)}" //範囲内のランダムな整数 "${randomAlpha(10)}" //ランダムなアルファベット(引数は文字数)
example
csvの出力例
"CUST_CODE","CUST_NAME","ZIP_CODE","ADDRESS1","ADDRESS2","ADDRESS3","LAST_UPDATE_DATE","LAST_UPDATE_USER"
"0001","三沢 莉穂","6560534","兵庫県","南あわじ市北阿万筒井9-9-5 シャンパーニュ北阿万筒井 307号室","シャンパーニュ北阿万筒井 307号室","2013-09-22","me"
"0002","小野田 風太","8890321","宮崎県","延岡市須美江町9-3-4 森ビル 1407","森ビル 1407","2013-09-22","me"
"0003","池田 杏奈","4440949","愛知県","岡崎市宇頭南町4-4-8","","2013-09-22","me"
"0004","水越 高志","1710043","東京都","豊島区要町6-13-2 トーシンコーポ要町 703","トーシンコーポ要町 703","2013-09-22","me"
"0005","矢野 駿介","3000066","茨城県","土浦市虫掛3297","","2013-09-22","me"