Как мне остановить автоматизацию, если 50% методов тестирования не прошли тестирование? - PullRequest
0 голосов
/ 14 мая 2018

Я хочу остановить выполнение, если записанные методы @Test потерпели неудачу более чем на 50%.

например:

public void LoginTest(){

    @Test
    public void ValidUserName(){

    }

    @Test
    public void InValidUserName(){
    }

    @Test
    public void ValidUserID(){
    }

    @Test
    public void ValidUserIDInvalidPassword(){
    }

    @Test
    public void EmptyUserNamePassword(){
    }
}

Если ValidUserName(), InValidUserName() и ValidUserID() потерпели неудачу, это означает, что методы LoginTest 50% @Test потерпели неудачу, и сейчас я не хочу выполнять ValidUserIDInvalidPassword() и EmptyUserNamePassword()

Было бы здорово, если бы кто-нибудь мог мне помочь в этом.

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Реализовать интерфейс IInvokedMethodListener и выбросить SkipException, когда порог будет достигнут.В приведенном ниже коде используется 30%.

public class MyMethodInvoke implements IInvokedMethodListener {

    private int failure = 0;

    @Override
    public void beforeInvocation(IInvokedMethod method, ITestResult testResult) {
        int testCount = testResult.getTestContext().getAllTestMethods().length; 
        if((failure * 1.0) / testCount > 0.3)
            throw new SkipException("Crossed the failure rate");
    }

    @Override
    public void afterInvocation(IInvokedMethod method, ITestResult testResult) {        
        if(testResult.getStatus()==ITestResult.FAILURE)
            failure++;
    }

}

@Listeners({package.MyMethodInvoke.class})
public class Test {

Он работает для тестов в одном классе, не знаю, как он ведет себя с тестами в нескольких классах в наборе.Или даже для параллельного исполнения.

0 голосов
/ 14 мая 2018

То, что вы хотите, не имеет смысла.Попробуйте реструктурировать ваши методы с зависимостями.Пример со страницы testNG:

@Test
public void serverStartedOk() {}

@Test(dependsOnMethods = { "serverStartedOk" })
public void method1() {}

см .: http://testng.org/doc/documentation-main.html#dependent-methods

ОБНОВЛЕНИЕ:

Существует понятие successPercentage, но онообычно используется по методу и в сочетании с invocationCount.Например, в асинхронных вызовах, где нельзя гарантировать 100% -ные вызовы, успешны.Итак, можно сделать:

//method is invocated 2 times. If 1 passes, test is considered OK/green.
@Test(timeOut = 2000, invocationCount = 2, successPercentage = 50)
public void waitForAnswer() throws InterruptedException{
...}

, но это несовместимо с тем, что вы хотите.

ОБНОВЛЕНИЕ 2: «То, что вы хотите, не имеет смысла».-> Чтение: «не поддерживается из коробки TestNG».Но есть некоторые обходные пути.См. Хорошие ответы в http://testng.1065351.n5.nabble.com/how-to-stop-a-test-suite-if-one-method-fails-td13441.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...