Ruby Загрузка нескольких скриптов из каталога с циклом foreach - PullRequest
0 голосов
/ 27 января 2012

Я использую цикл для загрузки и выполнения сценариев Ruby в каталоге.На данный момент скрипт загрузит скрипт, но как мне его выполнить, если единственной ссылкой на него является имя файла в виде строки?

Dir.foreach('tests') do |item|
   next if item == '.' or item == '..'   #removes extra "." or ".."
   load dirname + '/' +  item            #successfully loads the script
   if  item                              # the scripts return true/false
     numberPassed+=1
   else
     numberFailed+=1
     failed.push(item)
   end
   numberTested+=1
end

Почему-то я получаю 2 Прошло, но на самом деле он никогда не запускает сценарии, которые представляет «элемент».

РЕДАКТИРОВАТЬ: вот пример сценария, который необходимо загрузить.Все они следуют следующему формату:

require "watir-webdriver"

class TestScript


  puts 'Testing etc etc"...'

browser = Watir::Browser.new :ie
browser.goto "webpage.htm"
browser.text_field(:name => "j_username").set "username"
browser.text_field(:name => "j_password").set "password"
browser.link(:id, "watSubmitLogin").click

browser.wait

browser.link(:id=> 'watCommDir').fire_event("onmouseover")
browser.link(:id=> 'watAddFi').click
browser.wait

...


browser.link(:href, "javascript: submitForm();").click

browser.wait

if browser.text.include?( 'The user already Exists')
  puts 'Passed'
  browser.close
    return true
else
  puts 'Failed'
  browser.close
   return false
end

end

Мне нужно как-то сообщить основному сценарию, пройдены ли подпрограммы или нет, чтобы я мог отслеживать, сколько прошло / не удалось / ошибка / всего, и создать отчет.из всех испытаний, которые не удалось.

1 Ответ

1 голос
/ 27 января 2012

Похоже, что вы проводите приемочное тестирование с Watir и пытаетесь создавать отчеты о результатах пользовательских тестов.

Я бы порекомендовал использовать существующие тестовые прогоны для запуска всех ваших тестов и создания настраиваемого выходного форматера для ваших нужд. Существующие организаторы тестов уже решают множество проблем, с которыми вы столкнетесь при создании собственного тестировщика (например, как запускать тесты из указанной папки, как определить неудачный / успешный тест и т. Д.).

Один из распространенных тестов для приемочных испытаний в сообществе Ruby - Cucumber . Еще одна хорошая альтернатива - RSpec . Обе эти библиотеки поддерживают пользовательские форматеры:


Если вы хотите остаться с текущей простой реализацией, вот один из возможных подходов, основанный на ruby ​​Regexps: внутри глобальной переменной набора тестов, например, $test_succeeded (например, $~, $& и т. Д. Глобальные переменные, сгенерированные регулярными выражениями ruby), а затем проверьте это значение в тестовом средстве.

В тестах

if browser.text.include?( 'The user already Exists')
  puts 'Passed'
  browser.close
  $test_succeeded = true
# ...

В тесте бегун

Dir.foreach('tests') do |item|
  next if item == '.' or item == '..'   #removes extra "." or ".."
  load dirname + '/' +  item            #successfully loads the script
  if $test_succeeded
# ...

Если у вас проблемы с запуском скрипта, я могу рекомендовать определить специальный метод для запуска тестов (аналогично подходу RSpec):

def test
    test_res = yield # call test
    $test_results ||= {} 
    $test_results << test_res # and store its result in arra of test results
end

Тогда ваши тесты будут выглядеть так:

require 'file_with_test_method'
require 'watir-webdriver'

test do 
    # your test code

    browser.text.include?( 'The user already Exists') # last expression in the block will be the test result
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...