😀

テストデータ生成CLIツールつくった

2023/02/26に公開

背景

マーケティングのシステムの機能追加のテストをしていたときに、大量のテストデータを作成する必要があったため。

ツールを作成した目的

大量のテストデータを作成するCLIをGoで作成したらサクッと作れるしいいかなと考えたため。

使用方法

    genData [サブコマンド] [config file] [output file]
  • genCSV

概要

  • 指定桁数の文字列をカンマ区切りで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
        }
  • genDat

概要

  • 指定桁数の文字列を複数結合した固定長の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
            }
    
  • genAddress

概要

  • 指定したドメインのダミーメールアドレスを出現割合を指定して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
            }
    

さいごに

共通で使用している関数の引数をインターフェース化したり、項目のバリエーション(項目の型を指定できる、可変長に対応する、柔軟に様々な要件に対応できるようにインターフェース化する)を増やしていきたいと考えています。

ソース

https://github.com/o-ga09/genData

Discussion