Каратэ Retry Logi c и Конфигурация - PullRequest
1 голос
/ 09 марта 2020

Я ищу некоторые разъяснения о поведении retry until и karate.configure retry.

Когда я устанавливаю глобальную повторную попытку в конфигурации каратэ: karate.configure('retry', { count: 3, interval: 5000 }); karate.configure('connectTimeout', 5000); karate.configure('readTimeout', 10000);

я бы ожидайте, что это повторит любые сбойные HTTP-запросы без необходимости «повторять до логики / кода» на уровне функций.

Когда я запускаю набор тестов и запрос получает тайм-ауты чтения, я не вижу, чтобы набор выполнял повтор :

2: 53: 42.491 [main] ОШИБКА com.intuit.karate - java. net .SocketTimeoutException: Тайм-аут чтения, ошибка http после 10008 миллисекунд для URL: http://sports/list 12: 53: 42.495 [main] ОШИБКА com.intuit.karate - запрос http не выполнен:

java. net .SocketTimeoutException: чтение тайм-аута

функция: classpath: features / list.feature

scenar ios: 11 | прошло: 10 | не удалось: 1 | время: 55.7829

HTML отчет: (вставьте в браузер для просмотра) | Версия для каратэ: файл 0.9.4: /usr/src/app/test/functional/target/surefire-reports/features.list.html

Даже когда я добавляю Background: * retry until responseStatus == 200 в этой функции, тест все еще не запускает повторную попытку.

1 Ответ

0 голосов
/ 09 марта 2020

retry until вступает в игру только после того, как соединение установлено и сервер возвращает HTTP-ответы. Он предназначен для обработки случаев, когда вам нужно опросить определенный элемент данных responseStatus или response.

Так что он не охватывает случай, когда соединение не может быть установлено - или как выглядит в вашем если сервер слишком долго не отвечает. Возможно, вам придется увеличить readTimeout.

...