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

Разные действия после выполнения тестов в зависимости от успешности

java
testng
Теги: #<Tag:0x00007f9c55c3d4c8> #<Tag:0x00007f9c55c3cbe0>

(Яна Телегина) #1

Есть пачка тестов, после каждого теста выполняется какой-то код с помощью аннотации testNG @AfterTest
но мне необходимо выполнять разные действия после тестов в зависимости от того сфейлился тест при выполнении или прошел успешно
как такое можно реализовать?


(Nik Sidorenko) #2

Вариант 1.
Dependency Injection https://testng.org/doc/documentation-main.html#dependency-injection

    @AfterMethod(alwaysRun = true)
    public void afterTestMethod(ITestResult result) {
        if(result.isSuccess()) {
                // actions
        }
        else { // other action}
    }

Или такую проверку if(result.getStatus() == ITestResult.SUCCESS)


(Valentin G ) #3

Вам нужны test listeners. Тут есть примеры.


(Nik Sidorenko) #4

Вариант 2.
IResultListener

public class MyClass implements IResultListener {
    @Override
    public void onConfigurationSuccess(ITestResult itr) {
        
    }

    @Override
    public void onConfigurationFailure(ITestResult itr) {

    }

    @Override
    public void onConfigurationSkip(ITestResult itr) {

    }

    @Override
    public void onTestStart(ITestResult result) {

    }

    @Override
    public void onTestSuccess(ITestResult result) {
        // actions

    }

    @Override
    public void onTestFailure(ITestResult result) {
        // other actions
    }

    @Override
    public void onTestSkipped(ITestResult result) {

    }

    @Override
    public void onTestFailedButWithinSuccessPercentage(ITestResult result) {

    }

    @Override
    public void onStart(ITestContext context) {

    }

    @Override
    public void onFinish(ITestContext context) {

    }