Лучшие практики для проверки сообщений об ошибках с использованием объектов 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 и т. д.), которые будут добавлены в ваши тестовые примеры.

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

Я бы порекомендовал вам сначала инвестировать в эту область. Когда вы столкнетесь с вопросом о самоцвете ПО, напишите новый вопрос, и мы будем здесь!:-)

Другие вопросы по тегам