Module: Test::Unit::Data::ClassMethods

Defined in:
lib/test/unit/data.rb

Defined Under Namespace

Classes: Loader

Instance Method Summary collapse

Instance Method Details

#data(label, data) ⇒ Object #data(data_set) ⇒ Object #data(&block) ⇒ Object

This method provides Data-Driven-Test functionality.

Define test data in the test code.

Overloads:

  • #data(label, data) ⇒ Object

    Examples:

    data(label, data)

    data("empty string", [true, ""])
    data("plain string", [false, "hello"])
    def test_empty?(data)
      expected, target = data
      assert_equal(expected, target.empty?)
    end
    
  • #data(data_set) ⇒ Object

    Examples:

    data(data_set)

    data("empty string" => [true, ""],
         "plain string" => [false, "hello"])
    def test_empty?(data)
      expected, target = data
      assert_equal(expected, target.empty?)
    end
    
  • #data(&block) ⇒ Object

    Examples:

    data(&block)

    data do
      data_set = {}
      data_set["empty string"] = [true, ""]
      data_set["plain string"] = [false, "hello"]
      data_set
    end
    def test_empty?(data)
      expected, target = data
      assert_equal(expected, target.empty?)
    end
    

    Yield Returns:

    • (Hash)

      return test data set as a Hash that key is test label and value is test data.



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/test/unit/data.rb', line 55

def data(*arguments, &block)
  n_arguments = arguments.size
  case n_arguments
  when 0
    raise ArgumentError, "no block is given" unless block_given?
    data_set = block
  when 1
    data_set = arguments[0]
  when 2
    data_set = {arguments[0] => arguments[1]}
  else
    message = "wrong number arguments(#{n_arguments} for 1..2)"
    raise ArgumentError, message
  end
  current_data = current_attribute(:data)[:value] || []
  attribute(:data, current_data + [data_set])
end

#load_data(file_name) ⇒ Object

This method provides Data-Driven-Test functionality.

Load test data from the file. This is shorthand to load test data from file. If you want to load complex file, you can use #data with block.

Examples:

Load data from CSV file

load_data("/path/to/test-data.csv")
def test_empty?(data)
  assert_equal(data["expected"], data["target"].empty?)
end

Raises:

  • (ArgumentError)

    if +file_name+ is not supported file format.

See Also:



90
91
92
93
# File 'lib/test/unit/data.rb', line 90

def load_data(file_name)
  loader = Loader.new(self)
  loader.load(file_name)
end