LoginSignup
6
5

More than 5 years have passed since last update.

Rantly gemでランダムにテストデータを大量に生成する

Posted at

Rubyの property-based testing 向けライブラリの rantly gem で
ランダムなテストデータを大量に作成します。

関連記事

tbpgr の rantly 関連記事

サンプル

require "rantly"
require "pp"

module Languages
  NAMES = %w(c Java Ruby Perl PHP Python Scala Brainfuck)
end

Programmer = Struct.new("Programmer", :name, :age, :languages, :love_programming, :love_numbers)

def generate_programmer
  name = Rantly{choose('tanaka', 'suzuki', 'sato', 'honda', 'noda')}
  age = Rantly{range(10, 80)}
  languages = ::Languages::NAMES.sample(rand(4))
  love_programming = Rantly{boolean}
  love_numbers = Rantly{array(5){range(1, 100)}}
  Programmer.new(name, age, languages, love_programming, love_numbers)
end

# ループ数を大きくすればもっと大量のデータを生成できます
10.times {
  programmer = generate_programmer
  pp programmer
}
  • 出力
#<struct Struct::Programmer
 name="tanaka",
 age=54,
 languages=[],
 love_programming=false,
 love_numbers=[45, 57, 42, 35, 99]>
#<struct Struct::Programmer
 name="noda",
 age=11,
 languages=["PHP", "Perl", "Brainfuck"],
 love_programming=false,
 love_numbers=[79, 62, 93, 17, 33]>
#<struct Struct::Programmer
 name="sato",
 age=55,
 languages=["Ruby"],
 love_programming=true,
 love_numbers=[2, 17, 43, 89, 78]>
#<struct Struct::Programmer
 name="honda",
 age=39,
 languages=["Scala", "Java", "PHP"],
 love_programming=true,
 love_numbers=[97, 62, 19, 86, 57]>
#<struct Struct::Programmer
 name="sato",
 age=55,
 languages=[],
 love_programming=true,
 love_numbers=[87, 19, 24, 35, 24]>
#<struct Struct::Programmer
 name="noda",
 age=54,
 languages=[],
 love_programming=true,
 love_numbers=[60, 11, 40, 46, 19]>
#<struct Struct::Programmer
 name="tanaka",
 age=78,
 languages=["Brainfuck"],
 love_programming=false,
 love_numbers=[55, 5, 42, 71, 52]>
#<struct Struct::Programmer
 name="honda",
 age=49,
 languages=["Java"],
 love_programming=true,
 love_numbers=[81, 10, 22, 95, 58]>
#<struct Struct::Programmer
 name="tanaka",
 age=47,
 languages=[],
 love_programming=false,
 love_numbers=[84, 88, 49, 19, 33]>
#<struct Struct::Programmer
 name="tanaka",
 age=13,
 languages=["Ruby", "c"],
 love_programming=false,
 love_numbers=[44, 50, 47, 58, 11]>

外部資料

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5