t.me/atinfo_chat Telegram группа по автоматизации тестирования

Allure Adjustments in Reports хотелось бы подправить вид репорта

allure
junit
Теги: #<Tag:0x00007f9e34b000c0> #<Tag:0x00007f9e34afff58>

(Pavel Tsirulnikov) #1

Всем привет. Есть вопрос по кастомазингу allure report.
Например, когда отправляю запрос API - хочу из логов увидеть вот это в Overview Разделе

Request method: PUT
Request URI: https://einszweipolizei.de:123/api/communication-service/boxes/c67e696f-7c59-40sdfcscsc
Proxy:
Request params: active=true
Query params:
Form params:
Path params: boxId=c67e696f-7c59-407d-b262-802ca6c3b175
Headers: Accept=/
Cookies:
Multiparts:
Body:

HTTP/1.1 200 OK
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Date: Fri, 04 Oct 2019 12:50:21 GMT
Expires: 0
Pragma: no-cache
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Content-Type-Options: nosniff
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-Vcap-Request-Id: 0b870dc7-d735-4784-59dc-3062057e7a15
X-Xss-Protection: 1; mode=block
Content-Length: 0
Connection: keep-alive

1 expectation failed.
Expected status code <202> but was <200>.

А по факту овервью выдает только последнее:

1 expectation failed.
Expected status code <202> but was <200>.

заранее спасибо


(Vasiliy Rakshin) #2

(Pavel Tsirulnikov) #3

вы формулировку читали? для падающих тестов вытащить из логов HTTP body или HTTP request, т.е. для каждого падающего теста она будет своя


(Vasiliy Rakshin) #4

А вы сами-то определитесь тогда что вам надо. Изменить оверью, или распарсить какой-то лог.


(Pavel Tsirulnikov) #5

подождем след ответ. я хочу увидеть в овервью начиная отсюда Request method: PUT (1ая строчка) и до Expected status code <202> but was <200> (включительно) как и написано


(Vladislav Abramov) #6

я понимаю, что проще задать вопрос на форуме, чем попытаться разобраться самому, но вы не думали в дебаге проверить, что кладётся в аллюр, что вы имеете в эксепшене, как это что-то можно и нужно докладывать в аллюр?


(Pavel Tsirulnikov) #7

если будет инструкция/документация - с удовольствием пойду ее изучать. Просто я даже не увидел ответ в стиле “Да, это возможно” или “Нет, это не возможно”


(Alexandr D.) #8

Add attachment json/xml решит ваш вопрос


(Vladislav Abramov) #9

все это можно делать
allure commons


(Vladislav Sobol) #10

allure attachment и все будет хорошо, можно аттачить что угодно, хоть боди, хоть хэадер, хоть видео, хоть скриншот. Для этого ненужно кастомизировать ничего.


(Vasiliy Rakshin) #11
  1. Создаём такой
Листенер
package autotests.listeners;

import io.qameta.allure.Allure;
import io.qameta.allure.listener.TestLifecycleListener;
import io.qameta.allure.model.TestResult;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;

public class ATestListener implements TestLifecycleListener {

    @Override
    public void afterTestStart(TestResult result) {
        String id = "Optional[" + result.getUuid() + "]";
        File errf = new File("RestAssuredErrorStream_" + id);
        if (errf.isFile()) errf.delete();
    }

    @Override
    public void beforeTestStop(TestResult result) {
        String id = "Optional[" + result.getUuid() + "]";
        File errf = new File("RestAssuredErrorStream_" + id);
        if (errf.isFile()) {
            Allure.getLifecycle().updateTestCase((t) -> {
                String error = "";
                try {
                    error = new String(Files.readAllBytes(errf.toPath()));
                } catch (IOException ex) {
                }
                t.setStatusDetails(t.getStatusDetails().setMessage(error + "\n" + t.getStatusDetails().getMessage()));
            });
            errf.delete();
        }
    }
}
  1. Подключаем его:
    Создаём файл io.qameta.allure.listener.TestLifecycleListener в папке /src/main/resources/META-INF/services
    С путём куда вы положили класс листенера, например так:
    autotests.listeners.ATestListener

  2. Добавляем к коду тестов такой конфиг:

            given()
                    .config(RestAssured.config().logConfig(logConfig()
                            .defaultStream(new PrintStream("RestAssuredErrorStream_" + Allure.getLifecycle().getCurrentTestCase()))))

Результат

%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5


(Pavel Tsirulnikov) #12

красота! спасибо. поделюсь здесь тоже своим вчерашним промежуточным решением. Нужен действительно Allure Rest Assured (проект здесь https://github.com/allure-framework/allure-java#rest-assured). При использовании грейдела добавляем след строчку в build.gradle:

dependencies {

//Allure Rest Assured
testImplementation ‘io.qameta.allure:allure-rest-assured:2.9.0’

}

в RequestSpecification добавляем фильтр
.filter(new AllureRestAssured().setRequestTemplate(“custom-http-request.ftl”).setResponseTemplate(“custom-http-response.ftl”))

В круглых скобках добавляется темплейт CSS разметки, чтобы было по-веселее. Можно и с пустыми. Собственно все. на выходе получаем:

Пока оставляем так - идею с лисенером тоже попробую. Еще раз спасибо