Остановка выполнения в случае сбоя первого сценария в QAF - Cucumber - PullRequest
1 голос
/ 21 марта 2019

В настоящее время мы запускаем наш тест дыма из testng.xml, где у нас есть два различных sceanrio для проверки.

Наше требование заключается в том, что в случае сбоя одного сценария (@ Test1) другой не должен выполняться (@ Test2). Как мне добиться этого в QAF, Testng - Cucumber?

    <groups>
        <run>
            <include name="@Test1" />
            <include name="@Test2" />
        </run>
    </groups>
    <classes>
        <class
            name="com.qmetry.qaf.automation.step.client.gherkin.GherkinScenarioFactory" />
    </classes>
</test>

1 Ответ

1 голос
/ 21 марта 2019

Одним из способов является реализация прослушивателя вызова метода.В методе after вы можете установить флаг, а в методе before вы можете проверить флаг и пропустить тест в зависимости от значения флага.Например:

package com.qmetry.qaf.example.test;
...
public class StopRunListener implements IInvokedMethodListener {
   private static boolean hasFailure=false;

    @Override
    public void beforeInvocation(IInvokedMethod method, ITestResult testResult) {
        String[] groups = testResult.getMethod().getGroups();

        if(hasFailure && Arrays.asList(groups).contains("Test2")) {
            throw new SkipException("Stop execution due to failure");
        }
    }

    @Override
    public void afterInvocation(IInvokedMethod method, ITestResult testResult) {
        String[] groups = testResult.getMethod().getGroups();

        if(!testResult.isSuccess() && Arrays.asList(groups).contains("Test1")) {
            hasFailure=true;
        }

    }

}

Добавить прослушиватель в файл конфигурации XML

    <listeners>
       <listener class-name="com.qmetry.qaf.example.test.StopRunListener" />
    </listeners>
    <groups>
        <run>
            <include name="@Test1" />
            <include name="@Test2" />
        </run>
    </groups>
    <classes>
        <class
            name="com.qmetry.qaf.automation.step.client.gherkin.GherkinScenarioFactory" />
    </classes>

С помощью синтаксиса Gherkin вы не можете указать зависимости или другие метаданные.Вы можете использовать синтаксис BDD2 , доступный в qaf-2.1.14, и установить зависимость группы test1 от test2.Это обеспечит выполнение теста из группы test2 после группы test1.Но он не пропустит тест, если один из тестов в зависимости от группы не пройден.То, что вы можете достичь с помощью слушателя, как показано в примере выше.

Например:

#meta-data on feature will be assigned to all scenario in feature file
@Test1
Feature: A feature is a collection of scenarios

@Test2
@dependsOnGroups:Test1
Feature: A feature is a collection of scenarios

XML config будет:

    <listeners>
       <listener class-name="com.qmetry.qaf.example.test.StopRunListener" />
    </listeners>
    <groups>
        <run>
            <include name="Test1" /> <!-- don't add @ in group for BDD or BDD2 -->
            <include name="Test2" />
        </run>
    </groups>
    <classes>
        <class
            name="com.qmetry.qaf.automation.step.client.text.BDDTestFactory2" />
    </classes>
...