2013-03-21 2 views
1

Итак, я пытался понять это, и лучшее решение, которое я могу найти, это глобальные переменные, но это кажется таким грязным и 1974 год. Я отсутствует функция Rake/Test :: Unit?Параметры передачи и параметры для теста/блока через рейк :: TestTask

У меня есть Rake файл, в котором я бегу испытания:

Rake::TestTask.new(:test) do |t| 
t.test_files = FileList['test_*.rb'] 
end 

и test_1.rb есть что-то вроде этого:

require "test/unit" 
class TestStuff < Test::Unit::TestCase 
    def setup 
       @thingy = Thing.New(parameter1, parameter2) 
    end 

    def test_this_thing 
       @thing.do() 
    end 

end 

Моя проблема есть, вещь. new() требует аргументов, и эти аргументы специфичны для моей среды. На самом деле, я запускаю Selenium-WebDriver, и я хочу перейти в тип браузера, а также url и т. Д. Иногда я хочу ff, в другое время я хочу хром ... иногда этот URL, иногда это ... в зависимости от дня и т.д.

самое простое кажется сделать что-то вроде:

#all that rake stuff 
$parameter1 = x 
$parameter2 = y 

, а затем сделать Thing.new() посмотреть мои глобальные ВАР:

 @thingy = Thing.New($parameter1, $parameter2) 

Это кажется неаккуратным .. и это мне просто не нравится. Я все еще пытаюсь запустить эту «тестовую упряжь» и хочу сделать это в первый раз. Вот почему я выбрал Rake, основанный на множестве других отзывов.

Имейте в виду, что, вероятно, в конце концов у меня будет 100 тестов, и все они должны будут получить эту информацию ... Я думал, что Рейк хорош, чтобы убедиться, что все это легко, но это не так. Кажется, похоже.

Где я ошибся?

ответ

1

Я использовал файлы YAML для хранения моей конфигурации (конфигурации браузера, среды, включая URL-адреса и т. Д.).

Вы также можете использовать переменную окружения для определения простых конфигураций. Вы можете получить доступ к переменным окружениям через ENV['foobar'] в Ruby.

Так, к примеру, мой браузер вызов может выглядеть следующим образом внутри моего метода установки:

driver = Selenium::WebDriver.for (ENV['SWD_BROWSER'] || "firefox").to_sym 

и в моем файле Рек (или в консоли оболочки) определяет переменную окружающую среду для использования.

+0

Я хочу запустить тесты многопоточными. Похоже, что этот метод был бы проблемой, если бы я это делал, особенно если каждый тест имел разные значения для параметров. – djangofan

Смежные вопросы