TestNG&Allure:第一次失败后停止测试执行

问题描述 投票:1回答:1

我有一个不稳定的测试,由于间歇性可复制的错误,每10-20次尝试一次失败。我想将此测试在第一次失败后标记为“失败”。无需进一步重试。

这是Test注释的外观:

 @Test(invocationCount = 20, threadPoolSize = 3)

问题是,如果它没有在上一轮中失败-魅力报告将其视为“脆弱”测试,并且该报告为绿色。我要实现的是在第一次失败后终止重试测试方法。此测试在“魅力”报告中应为红色。

automated-tests testng allure testng-annotation-test
1个回答
0
投票

注释是在运行时之前设置的,因此一旦运行测试,就无法更改invocationCount。

您可以做的是在到达onTestFailure时使用侦听器停止执行。

因此,假设您拥有测试课程:

import org.testng.ITestContext;
import org.testng.annotations.Test;
import org.testng.asserts.Assertion;
import org.testng.annotations.Listeners;

@Listeners(TestListener.class)
public class CreateBookingTest extends TestConfig {

    @Test(invocationCount = 20)
    public void stopInvocationsTest(ITestContext testContext) {
        int currentCount = testContext.getAllTestMethods()[0].getCurrentInvocationCount();

        // We will force a failure in the invocation 5 (the 6th run).
        if (currentCount==5) {
            new Assertion().fail("Method failed in invocation " + currentCount);
        }
    }

}

然后,如果发生单个故障,侦听器将中止执行,并停止运行其余测试:

import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;
import org.testng.asserts.Assertion;

public class TestListener implements ITestListener {

    @Override
    public void onTestStart(ITestResult result) {
        System.out.println("\nSTARTING: " + result.getMethod().getCurrentInvocationCount());
    }

    @Override
    public void onTestSuccess(ITestResult result) {
        System.out.println("PASSED: " + result.getMethod().getCurrentInvocationCount());
    }

    @Override
    public void onTestFailure(ITestResult result) {
        System.out.println("FAILED: " + result.getMethod().getCurrentInvocationCount());
        new Assertion().fail("Aborting");
    }

    @Override
    public void onTestSkipped(ITestResult result) {
    }

    @Override
    public void onTestFailedButWithinSuccessPercentage(ITestResult result) {
    }

    @Override
    public void onStart(ITestContext context) {
    }

    @Override
    public void onFinish(ITestContext context) {
    }

}
© www.soinside.com 2019 - 2024. All rights reserved.