Укажите тело запроса и ответа в отчете по огурцу

Пользуюсь java-cucumber и отдыхаю. В настоящее время я пытаюсь создать отчет, в котором я буду предоставлять полную информацию о запросах и ответах для каждого запроса в отчете. Возникает вопрос: можно ли сохранить в переменной всю информацию о запросах и ответах? Или использовать другой способ получить эти данные в отчете?

P.S. Я знаю, как получить ответ (extract().response()) или распечатать в журналах консоли (log().all()) всю информацию о запросе. И я уже настроил maven-cucumber-reporting, который генерирует html-отчет, но без всех данных API запросов и ответов.


person lexa2395    schedule 25.08.2017    source источник
comment
Вы можете использовать метод write () сценария и передать текст запроса ответа. В ловушке Before вы можете передать объект Scenario и сохранить его внутри переменной экземпляра класса определения шага.   -  person Grasshopper    schedule 25.08.2017
comment
Добро пожаловать в stackoverflow. Не могли бы вы предоставить код вашей конкретной проблемы. Это докажет, насколько далеко вы пытались, и поможет другим участникам лучше понять вашу проблему, в то время как вы дадите им контекст вашей проблемы. Пожалуйста, проверьте эти ссылки: stackoverflow.com/help/mcve и stackoverflow.com/help/how-to-ask   -  person Elias MP    schedule 25.08.2017


Ответы (3)


import io.restassured.specification.FilterableRequestSpecification;
import io.restassured.specification.FilterableResponseSpecification;
// ...

Пробовал это, и он отлично работает, пока я не начну параллельно запускать тесты с RestAssured. Это сообщение иногда приводит к сбоям в тестовых запусках, поэтому мне пришлось его прокомментировать, и теперь меня также интересует другой способ регистрации данных запроса / ответа.

person Taras M.    schedule 07.08.2018

Не знаком с огурцом, но если у него есть что записывать вывод для отчета, вы можете создать фильтр в REST Assured:

import io.restassured.filter.FilterContext;
import io.restassured.filter.OrderedFilter;
import io.restassured.response.Response;
import io.restassured.specification.FilterableRequestSpecification;
import io.restassured.specification.FilterableResponseSpecification;

public class RcAllureFilter implements OrderedFilter {

    @Override
    public int getOrder() {
        return LOWEST_PRECEDENCE;
    }

    @Override
    public Response filter(FilterableRequestSpecification requestSpec, FilterableResponseSpecification responseSpec, FilterContext ctx) {
        Response response = ctx.next(requestSpec, responseSpec);
        //you need to implement it, refer to io.restassured.internal.print.RequestPrinter#print
        printRequest(requestSpec.getMethod(), requestSpec.getURI(), requestSpec);
        //you need to implement it, refer to io.restassured.internal.print.ResponsePrinter#print
        printResponse(response, response, response.getStatusLine());
        return response;

    }
}
person RocketRaccoon    schedule 01.09.2017

Если вы можете рассмотреть вопрос о переходе с REST-гарантированного, Karate имеет именно ту возможность, которую вы ищете, где подробные журналы HTTP-запросов и ответов отображаются в строке в HTML-отчете Cucumber. Вот короткое демонстрационное видео.

Вы можете найти подробное сравнение карате и REST-гарантированного здесь.

Отказ от ответственности: я разработчик.

person Peter Thomas    schedule 02.09.2017