Есть ли какой-либо способ протестировать несколько веб-сайтов и проверить их код состояния http с помощью ruby, capybara и cucumber

#ruby #cucumber #capybara #test-data

#ruby #cucumber #capybara #тестовые данные

Вопрос:

Я написал один тестовый сценарий, который выполняется на нескольких веб-сайтах (около 400) и возвращает фактический код состояния веб-сайта. (Ожидается, что будет 200, когда сайт запущен и запущен).

Я использую схему сценария и примеры для записи тестовых данных, и я использую capybara-webkit для проверки ожидаемого кода состояния http.

Однако есть ли какой-либо альтернативный способ тестирования этой функциональности, поскольку в настоящее время мой файл функций очень громоздкий.

Ответ №1:

Лучше всего просто использовать скрипт и что-то вроде bash и дескриптора curl.

Это будет буквально 1/2 строки кода для вашего тестирования, а затем только ваш исходный цикл

Cucumber предназначен для того, чтобы ваша документация, ваша спецификация и ваши тесты были в одном месте. Если вы не являетесь владельцем всех этих веб-сайтов, тогда лучше иметь что-то менее громоздкое.

Люк

Ответ №2:

Как насчет использования такой службы: https://httpstatus.io / он проверяет статус http на нескольких сайтах и предлагает API для его интеграции с вашим приложением

Комментарии:

1. Спасибо, Даниэль. Для меня это выглядит хорошо. Однако возможно ли использовать указанный выше URL-адрес в cucumber для проверки тестов? Я хочу периодически запускать эти тесты в рамках моего регрессионного тестирования.

2. Конечно, вы можете его использовать, сайт предоставляет вам ключ api, кроме того, status api открыт для общественности, и на стороне cucumber вы можете использовать его с HttpPost

Ответ №3:

Вы можете написать гораздо более простой cuke, присвоив набору веб-сайтов имя и указав детали набора в определениях шагов (в идеале с помощью вспомогательного метода). Это позволяет вам удалить ваш набор URL-адресов из функции и поместить их в другое место.

 Scenario: Check foo websites
  Given foo websites
  When I check the foo websites
  Then I should see no errors
  

а затем реализовать, когда что-то вроде (ниже приведен псевдокод в стиле ruby)

 When 'I check the foo websites' do
  sites = load_foo_websites
  @errors = {}
  sites.each do |site|
    @errors << (site_ok(site) is false)
  end
end
  

Теперь вы сохранили свои @errors в глобальном, к которому вы можете получить доступ в своем Then.

Метод load_foo_websites может получать ваши веб-сайты из любого места, поскольку это код.