Похоже, что вы проводите приемочное тестирование с 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