#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 может получать ваши веб-сайты из любого места, поскольку это код.