t.me/atinfo_chat Telegram группа по автоматизации тестирования

Watir: Базовые стили написания тестов. Часть 2


(Mykhailo Poliarush) #1

Данный урок является продолжением урока 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