😀
テストデータ生成CLIツールつくった
背景
マーケティングのシステムの機能追加のテストをしていたときに、大量のテストデータを作成する必要があったため。
ツールを作成した目的
大量のテストデータを作成するCLIをGoで作成したらサクッと作れるしいいかなと考えたため。
使用方法
genData [サブコマンド] [config file] [output file]
概要
- 指定桁数の文字列をカンマ区切りでcsvファイルに出力する
- 改行文字を指定することが可能
実行形式 - how to use
genData genCSV [config file] [output file name]
設定ファイルの書式 - config file format
row_num: 100 # データの行数 line of deta
nc: "\n" # 改行文字 newline character
Col_info: # データの項目情報 data infomation
- {
col_name: "test1", #項目名1 column name 1
str_len: 10, #項目1の文字列長 length column name 1
}
- {
col_name: "test2", #項目名2 column name 2
str_len: 20, #項目2の文字列長 length column name 2
}
- {
col_name: "test3", #項目名3 column name 3
str_len: 5, #項目3の文字列長 length column name 3
}
概要
-
指定桁数の文字列を複数結合した固定長のdatファイルに出力する
-
改行文字を指定することが可能
実行形式 - how to use
genData genDat [config file] [output file name]
設定ファイルの書式 - config file format
row_num: 100 # データの行数 line of deta nc: "\n" # 改行文字 newline character Col_info: # データの項目情報 data infomation - { col_name: "test1", #項目名1 column name 1 str_len: 10, #項目1の文字列長 length column name 1 require: false #項目名1が必要化否かのフラグ flag of required one } - { col_name: "test2", #項目名2 column name 2 str_len: 20, #項目2の文字列長 length column name 2 require: false #項目名2が必要化否かのフラグ flag of required one } - { col_name: "test3", #項目名3 column name 3 str_len: 5, #項目3の文字列長 length column name 3 require: false #項目名3が必要化否かのフラグ flag of required one }
概要
-
指定したドメインのダミーメールアドレスを出現割合を指定してtxtファイルに出力する
-
改行文字を指定することが可能
実行形式 - how to use
genData genAddress [config file] [output file name]
設定ファイルの書式 - config file format
row_num: 100 # データの行数 line of deta nc: "\n" # 改行文字 newline character Col_info: # データの項目情報 data infomation - { domain_name: "@icloud.com", #ドメイン名1 domain name1 ratio: 0.5, #ドメイン名1の出現割合 ratio of domain name1 } - { domain_name: "@ezweb.ne.jp", #ドメイン名1 domain name2 ratio: 0.25, #ドメイン名2の出現割合 ratio of domain name2 } - { domain_name: "@i.softbank.jp", #ドメイン名1 domain name3 ratio: 0.25, #ドメイン名3の出現割合 ratio of domain name3 }
さいごに
共通で使用している関数の引数をインターフェース化したり、項目のバリエーション(項目の型を指定できる、可変長に対応する、柔軟に様々な要件に対応できるようにインターフェース化する)を増やしていきたいと考えています。
ソース
Discussion