Я пытался закодировать тест автоматизации для QnA моего приложения. Сегодня во время выполнения тестов я заметил, что все тесты проходили независимо от неправильных входных данных, которые я дал нескольким QnA.
Когда я проверил, я обнаружил, что код ответа, возвращаемый QnA Api с допустимыми заголовками, такими как ключ аутентификации, всегда был 200 Ok независимо от того, был ли ввод в конкретный QnA правильным или неправильным. Из-за этого все мои тесты проходили, так как шаг, который подтвердил, что код ответа 200 Ok, всегда проходил успешно. Ответ также был в правильном формате Json, поэтому тест на форматирование также проходил успешно.
Я понимаю, что это причина того, что Api продолжает возвращать код состояния 200 Ok, но я считаю, что в идеале он должен отвечать кодом состояния относительно ответа, полученного в теле ответа. Единственное отличие заключалось в том, что, когда в Api был передан неверный ввод, параметр тела ответа 'answer' возвращал текстовое сообщение об ошибке, например: «В КБ не найдено хорошего соответствия». Это можно увидеть ниже.
Принимая во внимание, что в случае действительного ввода в BOT, ниже ответ получен. Обратите внимание, что единственное отличие заключается в значении параметра ответа 'answer' в теле ответа.
Наконец, мне пришлось добавить валидаторы, чтобы проверить, что тесты, возвращающие 200 Ok, также не возвращали текст сообщения об ошибке в теле ответа в параметре 'answer' тела. Но теперь, если текст сообщения об ошибке изменится (изменения будут сделаны службами) в будущем, мои тесты также не пройдут, так как они были настроены для сравнения с конкретным сообщением об ошибке.
На мой взгляд, это только временное решение для тестирования уровня кода автоматизации QnA Apis. Есть ли в любом случае можно изменить код ответа, возвращаемый этими Apis, чтобы отразить фактический ответ в теле ответа. Если это можно сделать, то можно остановить тесты, как только коды ответов не совпадают, что экономит время, усилия и повышает производительность. Если есть какой-то другой способ улучшить эту работу, я открыт для предложений.
ПРИМЕЧАНИЕ. Я использовал методы вызова POST для тестирования моего Apis.