Отчёт Allure без аннотаций @Step

Для создания шагов в отчёте без использования аннотаций будем использовать "жизненный цикл" Allure.

Создание шага:

var stepId = UUID.randomUUID().toString();
var stepResult = new StepResult();
stepResult.setName(stepName);
Allure.getLifecycle().startStep(stepId, stepResult);

Обновление шага (например, для изменения статуса):

Allure.getLifecycle().updateStep(stepId, s -> s.setStatus(Status.PASSED));

Остановка шага:

Allure.getLifecycle().stopStep(stepId);

Добавление вложения (скриншот, лог и т.д.):

Allure.getLifecycle().addAttachment();

Эти и другие методы выносятся в отдельный статический хелпер.


Следующие тесты иллюстрируют работу "жизненного цикла" Allure.


Автотест по api

Тест посылает слово с ошибкой в метод проверки орфографии, проверяет ответ от сервиса (проверка в данном примере условна).

@DisplayName("Проверка метода checkText сервиса SpellService")
@Tag("Позитивный")
@Test
@Description("Проверка метода checkText сервиса SpellService для примера работы фреймворка")
void checkSpellService() {
    var request = new CheckTextRequest();
    request.setText("масква");
    var response = spellServiceClient.checkText(request);
    Assert.areNotEqualAndAccumulate(0, response.getSpellResult().getError().size(), 
            "Пустой ответ от сервиса");
    Assert.areEqual(1, response.getSpellResult().getError().stream().
            filter(s -> s.getS().contains("Москва")).collect(Collectors.toList()).size(), 
            "В ответе от сервиса нет 'Москва'");
}

Тест пройден:
Тест пройден

Первый шаг теста в отчёте создаётся в методе getResponse хелпера, от которого наследуется SpellServiceClient. Параметры request и response добаляются в шаг во входящем и исходящем интерсепторах (перехватчиках сообщений).

Обратимся в тесте к несуществующему методу. Тест "сломан". Вместо запроса и ответа в параметры шага передаётся ошибка.
Тест сломан



Браузерный автотест

Тест открывает главную страницу поисковой системы, заполняет поле поиска, кликает по кнопке поиска и проверяет отсутствие поля поиска главной страницы на странице поисковой выдачи.

@DisplayName("Тестовый автотест для примера")
@Tag("Позитивный")
@Test
void checkYaSearch() {
    pages.ya.open();
    pages.ya.searchField.sendKeys("selenium");
    pages.ya.searchButton.click();
    Assert.isTrue(() -> pages.ya.searchField.notExists(), "Есть поле поиска");
}

Тест использует объект pages, в котором хранятся объекты страниц. Объекты страниц предоставляют методы для работы со страницей в браузере (open, refresh и др.), а также хранят объекты элементов страницы. Элементы страниц предоставляют методы для работы с элементами (click, sendKeys и др.). Каждый метод страницы и элемента создаёт свой шаг для отчёта.

Тест пройден:
Тест пройден

Изменим xpath элемента "Кнопка поиска" на несуществующий. Тест не пройден. К шагу "Клик по элементу" добавлены параметры с ошибкой, прикреплён скриншот.
Тест не пройден Тест не пройден

Изменим xpath элемента "Кнопка поиска" на невалидный. Тест помечается как сломанный и останавливается перед запуском браузера. В отчёт добаляются шаги с ошибками.
Тест сломан


Использованы Java 11, Allure 2.10.0, Junit 5.4.0

26.02.2019 ← на главную Теги: allure, java