test-data-printer

日本語のそれっぽいテストデータを生成します。

npm install test-data-printer
66 downloads in the last week
122 downloads in the last month

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 = function (count) {
       this._repeat = count;
       return this;
   };

   module.exports = {
       /** CSVヘッダー **/
       headers: ["CUST_CODE", "CUST_NAME", "ZIP_CODE", "ADDRESS1",
       "ADDRESS2", "ADDRESS3", "LAST_UPDATE_DATE", "LAST_UPDATE_USER", ],

       /** データ定義 **/
       entries: [
           {
               //顧客コード
               CUST_CODE: '${padZero(rownum, 4)}',

               //顧客名
               CUST_NAME: '${name.first()}',

               //郵便番号
               ZIP_CODE: '${postal.joiner("");}',

               //住所1
               ADDRESS1: '${address.prefecture()}',

               //住所2
               ADDRESS2: '${address.remain()}',

               //備考
               note: function(rownum){
                    //独自定義の関数を渡せます。
                    //引数には行番号が入ってきます。
                    return rownum + "番目の備考";
               }

           }.repeat(1000), //データ件数

           //データ定義はハッシュでも配列でも渡せます。
           ['${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"
npm loves you