Лучшие практики для проверки сообщений об ошибках с использованием объектов Page
Лучшая практика для проверки сообщений об ошибках с использованием объектов Page. Таким образом, у меня есть дублирование в отношении моего кода, где я проверяю различные сообщения об ошибках. Мой вопрос использует гем Page Objects / page_objects, есть ли способ удалить это дублирование? Мой код:
def check_error_message
expected_text = "The highlighted fields must be filled out correctly."
css = "button-error"
actual_text = @browser.span(:class, css).text
actual_text.should == expected_text
puts "Span class '#{css}' expected text: #{expected_text}"
puts "Span class '#{css}' actual text: #{actual_text}"
end
def check_password_weak_message
expected_text = "Password is too weak, please choose a different password."
css = "formError"
actual_text = @browser.div(:class, css).text
actual_text.should == expected_text
puts "Span class '#{css}' expected text: #{expected_text}"
puts "Span class '#{css}' actual text: #{actual_text}"
end
def check_dupe_email_message
expected_text = "This email address is already in use by another ID.me account"
css = "label-error"
actual_text = @browser.div(:class, css).text
actual_text.should == expected_text
puts "Span class '#{css}' expected text: #{expected_text}"
puts "Span class '#{css}' actual text: #{actual_text}"
end
Вещи, которые меняются в методах: Ожидаемый_текст, css, actual_text.
1 ответ
Gem объекта страницы не поможет вам в этом случае.
В вашем случае давайте не будем говорить о геме объекта страницы. Вместо этого, давайте просто воспользуемся общим термином "шаблон объекта страницы", поскольку именно это реализует гем объекта страницы.
Шаблон PO предназначен для создания слоя абстракции между тестируемой веб-страницей и тестовым кодом.
В вашем случае, когда у вас есть такие заявления, как
actual_text = @browser.div(:class, css).text
Шаблон PO поместит все подобные загадочные утверждения в одно место, которое называется "объект страницы". Когда это происходит, вы создаете методы, которые используются для взаимодействия со страницей, вместо того, чтобы делать прямые (часто повторяющиеся и не описательные) вызовы Selenium Web-драйвера. Это чрезмерное упрощение паттерна PO, но я не собираюсь объяснять это здесь.
С помощью созданных вами методов тестирования вы получите набор очень простых и функциональных тестов, которые довольно легко создать. Таким образом, вы можете создавать их быстро, но вы интуитивно понимаете, что вы повторяете себя, и если вы расширите этот набор тестов до нескольких сотен тестовых случаев, вы столкнетесь с серьезным кошмаром обслуживания.
Таким образом, вам нужно инвестировать в некоторые более полные рамки автоматизации, чтобы помочь вам. Например, вы можете рассмотреть возможность использования cucumber, rspec, capybara или любой из множества других тестовых сред, которые помогут вам управлять тестовыми данными в отдельном месте и начать добавлять абстракцию и конкретные области ответственности, такие как классы, которые обрабатывают ошибки, классы, которые могут загрузить тестовые данные (CSV, XML и т. д.), которые будут добавлены в ваши тестовые примеры.
По сути, я начинаю писать статью с практическими рекомендациями (книгу) о том, как создать инфраструктуру автоматизации, которая выходит за рамки вашего вопроса, входит в сферу мнений и т. Д., Что на самом деле не совместимо. с намерением переполнения стека (сайт проблем / ответов против форума, на котором можно обсуждать, делиться мнениями и т. д.)
Я бы порекомендовал вам сначала инвестировать в эту область. Когда вы столкнетесь с вопросом о самоцвете ПО, напишите новый вопрос, и мы будем здесь!:-)