Чтобы сообщить об ошибках теста в отчете Allure, мы должны внести небольшие изменения в класс Allure.Здесь мы хотим сообщить о любом из подэтапов как о сбое, выполнить оставшиеся шаги и затем пометить основной шаг теста как проваленный.Для этого мы можем использовать концепцию SoftAssertions.Я создал один класс под названием AllureLogger.Внутри класса у нас будет 5 методов.
1) starttest () 2) endtest () 3) markStepAsPassed (String message) 4) marstepAsFailed (String message) 5) logStep ().
public class AllureLogger {
public static Logger log = Logger.getLogger("devpinoylog");
private static StepResult result_fail;
private static StepResult result_pass;
private static String uuid;
private static SoftAssert softAssertion;
public static void startTest() {
softAssertion = new SoftAssert();
}
public static void logStep(String discription) {
log.info(discription);
uuid = UUID.randomUUID().toString();
result_fail = new StepResult().withName(discription).withStatus(Status.FAILED);
result_pass = new StepResult().withName(discription).withStatus(Status.PASSED);
}
public static void markStepAsFailed(WebDriver driver, String errorMessage) {
log.fatal(errorMessage);
Allure.getLifecycle().startStep(uuid, result_fail);
Allure.getLifecycle().addAttachment(errorMessage, "image", "JPEG", ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES));
Allure.getLifecycle().stopStep(uuid);
softAssertion.fail(errorMessage);
}
public static void markStepAsPassed(WebDriver driver, String message) {
log.info(message);
Allure.getLifecycle().startStep(uuid, result_pass);
Allure.getLifecycle().stopStep(uuid);
}
public static void endTest() {
softAssertion.assertAll();
softAssertion = null;
startTest();
softAssertion = new SoftAssert();
}
}
В вышеприведенном классе мы используем разные методы из allureClass и делаем небольшие изменения для добавления мягких утверждений.
Каждый раз, когда мы запускаем TestMethod в testClass, мы можем вызывать starttest () и end testmethod (). Внутри методов тестирования, если у нас есть несколько подшагов, мы можем использовать блок try catch, чтобы пометить подэтапы как пройденные или неудачные. Пример. Пожалуйста, проверьте приведенный ниже метод теста в качестве примера
@Test(description = "Login to application and navigate to Applications tab ")
public void testLogin()
{
AllureLogger.startTest();
userLogin();
navigatetoapplicationsTab();
AllureLogger.endTest();
}
Выше приведен тестметод, который войдет в одно приложение, а затем перейдет на вкладку приложения. Внутри у нас есть два метода, которые будут отображаться как подшагы: 1) login () - для входа в приложение 2) navigatetoapplicationsTab () - для перехода на вкладку приложения.Если какой-либо из подэтапов завершится неудачно, то основной шаг и подэтап будут помечены как сбойные, а остальные шаги будут выполнены.
Мы определим тело вышеприведенных функций, которые определены в методе тестирования, следующим образом:
userLogin()
{
AllureLogger.logStep("Login to the application");
try
{
/*
Write the logic here
*/
AllureLogger.MarStepAsPassed(driver,"Login successful");
}
catch(Exception e)
{
AllureLogger.MarStepAsFailed(driver,"Login not successful");
}
}
navigatetoapplicationsTab()
{
AllureLogger.logStep("Navigate to application Tab");
try
{
/*
Write the logic here
*/
AllureLogger.MarStepAsPassed(driver,"Navigate to application Tab successful");
}
catch(Exception e)
{
e.printStackTrace();
AllureLogger.MarStepAsFailed(driver,"Navigate to application Tab failed");
}
}
Каждый раз, когда выдается какое-либо исключение, они попадают в блок улова и сообщаются в отчете об очарованиях.Мягкое утверждение позволяет нам успешно выполнить все оставшиеся шаги.
Прикрепленный снимок экрана отчета Allure, сгенерированного с использованием вышеуказанного метода. Основной шаг помечен как Неудачный, а остальные тестовые примеры выполнены.
Прилагаемый здесь отчет не из приведенного выше примера.Это просто пример того, как будет выглядеть отчет.