Данный урок является продолжением урока Watir: Базовые стили написания тестов. Часть 1
Сценарий теста так же взят из предыдущего урока.
Написание тестов через test unit
Перепишем описанный выше пример с использованием библиотеки TestUnit
. TestUnit
используется для написания unit тестов в Ruby
. Данная библиотека относится к семейству инструментов xUnit
и включает всевозможные assert методы для более мощной валидации тестов. Установка дополнительных модулей не требуется.
Для начала нужно добавить все необходимые библиотеки
# Required in ruby 1.8.7
require 'rubygems'
# Watir IE driver
require 'watir'
# Test Unit library
require 'test/unit'
Далее начинаем использовать все прелести ООП.
Создаем наш тестовый класс, который унаследован от Test::Unit::TestCase
class WatirTestUnit < Test::Unit::TestCase
# fill in Test Case methods here
end
И задаем первую тестовую функцию.
def test_GoogleSearchEngine
# fill in method body with Watir code and assertion here
end
Слово test
, перед началом метода – ключевое. Интерпретатор будет запускать данный метод как TestUnit
тест. Запуск тестов производится в алфавитном порядке. Если вы хотите самостоятельно указывать порядок запуска тестов, стоит добавить префиксы к названию тестов. Например test_01_newtest
, test_02_newtest
. Избегайте нумерации 1,2,3,4,5,6,7,8,9,10,11 …
Так как интерпретатор запустит тесты в порядке 1,10,11,2,3,4...
Переходим к добавлению assert методов. Watir поддерживает обвертки для assert методов под специфические задачи. Например
assert(@ie.contains_text("Watir, pronounced water"))
Методы setup и teardown зарезервированы для TestUnit
. Если вы хотите использовать функциональность setup метода, чтобы выполнить действия перед тестом. Или teardown, после теста. Просто добавьте их в тест, как на примере
def setup
# fill in code that will run before every test case here
end
def teardown
# fill in code that will run after every test case here
end
Результирующий тест GoogleSearchEngine
с использованием TestUnit
выглядит следующим образом
# Required in ruby 1.8.7
require 'rubygems'
# Watir IE driver
require 'watir'
# Test Unit library
require 'test/unit'
#*************************************************************
# Second lesson of Watir automated testing tool.
#
# Summary: Basic test of Google search engine.
# Description: the next steps to be automated:
# - going to google.com,
# - typing ‘Watir’ into search form,
# - click ‘Search’,
# - verify results.
#*************************************************************
class WatirTestUnit < Test::Unit::TestCase
SEARCH_TEXT = "Watir"
def setup
@ie = Watir::IE.start "http://www.google.com"
end
def teardown
@ie.close
end
def test_GoogleSearchEngine
@ie.text_field(:name, "q").set SEARCH_TEXT # "q" is the name of the search field
@ie.button(:name, "btnG").click # "btnG" is the name of the Search button
assert(@ie.contains_text("Watir, pronounced water"))
end
end
Сохраняем его как d:\WatirGoogleEngineSecondTest.rb
и запускаем
ruby WatirGoogleEngineSecondTest.rb
Результатом теста должен быть консольный лог вида
Loaded suite WatirGoogleEngineSecondTest
Started
.
Finished in 12.875 seconds.
1 tests, 1 assertions, 0 failures, 0 errors