Тестирование на основе данных с помощью ruby ​​testunit

У меня есть очень простая проблема, для которой я не могу найти никакого решения.

Поэтому я использую Watir Webdriver с testunit для тестирования своего веб-приложения. У меня есть тестовый метод, который я хотел бы запустить с несколькими наборами тестовых данных.

Хотя я, конечно, могу использовать старые трюки с циклом, чтобы запустить его, но это покажет, что был запущен только 1 тест, а это не то, что мне нужно.

Я знаю, что в testng у нас есть @dataprovider, я ищу что-то подобное в testunit.

Любая помощь!!

Вот что у меня есть до сих пор:

[1,2].each do |p|
define_method :"test_that_#{p}_is_logged_in" do
 # code to log in
end
end

Это прекрасно работает. Но моя проблема заключается в том, как и где я могу создавать данные, с которыми я могу зацикливаться. Я читаю свои данные из excel, скажем, у меня есть список хэшей, которые я получаю из excel, что-то вроде [{:name =>abc,:password = > test},{:name =>def,:password => test}]

Текущий статус кода:

    class RubyTest < Test::Unit::TestCase

    def setup
      @excel_array = util.get_excel_map //This gives me an array of hash from excel
    end

     @excel_array.each do |p|
     define_method :"test_that_#{p}_is_logged_in" do
       //Code to check login
     end
     end

Я изо всех сил пытаюсь запустить цикл. Я получаю сообщение об ошибке "неопределенный метод `каждый' для nil:NilClass (NoMethodError)" в строке объявления класса


person Pratik    schedule 29.10.2013    source источник
comment
Я все еще изучаю testunit, поэтому на данный момент нет кода, который я пробовал или которым я могу поделиться, хотел получить основные идеи, прежде чем я смогу начать   -  person Pratik    schedule 29.10.2013
comment
Я бы хотя бы начал... а потом задавал вопросы, которые нужно продолжать. Это традиция StackOverflow. У вас явно есть проблема, вы, должно быть, пытались что-то сделать... иначе вы не решили эту проблему.   -  person vgoff    schedule 29.10.2013
comment
Отредактировал вопрос с кодом   -  person Pratik    schedule 29.10.2013
comment
Однако данные сохраняются, затем собирайте зарегистрированных пользователей и смотрите, присутствует ли этот логин.   -  person vgoff    schedule 29.10.2013
comment
@Pratik, у тебя уже есть код для извлечения данных из Excel? Другими словами, вы просто ищете, как перебрать этот массив и определить на его основе тесты?   -  person Justin Ko    schedule 29.10.2013
comment
@JustinKo, да, верно. Я отредактировал свой вопрос с тем, что у меня есть в настоящее время   -  person Pratik    schedule 30.10.2013
comment
Ваша проблема, возможно, в том, что @excel_array равно нулю, а не тому, что вы ожидаете. И этого не происходит при объявлении класса, так что эта часть вашего вопроса сбивает с толку.   -  person vgoff    schedule 08.11.2013


Ответы (1)


Вы хотите сделать что-то вроде этого:

require 'minitest/autorun'

describe 'Login' do
  5.times do |number|
    it "must allow user#{number} to login" do
      assert true # replace this assert with your real code and validation
    end
  end
end

Конечно, я смешиваю формулировку спецификации и утверждения теста/модуля, но в любом случае, там, где есть утверждение, вы должны поместить утверждение/ожидание.

В том виде, в котором этот код существует, он пройдет 5 раз, и если бы вы сообщили в виде истории, он был бы изменен на номер пользователя для соответствующего теста.

Откуда брать данные, то есть часть кода, которой не хватает, где еще надо попробовать и получить ошибки.

person vgoff    schedule 29.10.2013