Порядок выполнения классов тестов TestNG - PullRequest
0 голосов
/ 03 апреля 2020

Я прочитал многие статьи здесь на эту тему c и до сих пор не нашел ту, которая решает мою проблему.

Цель:

  1. Получить тестовые классы, определенные в файле testng. xml, для выполнения в порядке, указанном в файле.
  2. Все методы определены в каждом классе запуск в указанном порядке (это работает)
  3. В любой момент времени можно открыть только одно окно браузера (БЕЗ параллельного выполнения)

В каждом тестовом классе есть метод init, который инициализирует браузер , поэтому я понимаю, почему я получаю n браузеров windows, открытых сразу, по одному на каждый тестовый класс.

Я бы хотел, чтобы это было ...

Начните тестовый класс A Запустите все методы в тестовом классе A Закройте браузер с помощью метода @AfterTest в тестовом классе A Перейдите к тестовому классу B ...

Я надеюсь, что есть некоторые так, что я могу заставить TestNG сделать это. Кроме того, я запускаю тесты из командной строки maven с помощью mvn test -Dbrowser = chrome с плагином surefire, который вызывает мой определенный файл TestNG. xml.

Current TestNG . xml файл

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Suite">
    <listeners>
        <listener class-name="com.infdig.qa.Listeners" />
        <listener class-name="com.infdig.qa.resources.ExtentReporterNG" />
    </listeners>
    <test name="Regression"  >
        <classes>
            <class name="com.infdig.qa.BasicSiteNavigationTests">
                <methods>
                    <include name="openedToDashboard" />
                    <include name="navigateToActiveReleasePreset" />
                    <include name="navigateToReleasePresets" />
                    <include name="navigateToComponentSelections" />
                    <include name="navigateToOrderSlices" />
                    <include name="navigateToAbout" />
                </methods>
            </class>
            <class name="com.infdig.qa.AboutPageTests">
                <methods>
                    <include name="validateAboutPageDescriptionText" />
                    <include name="validateAboutPageLegalText" />
                    <include name="validateAboutPageHelpText" />
                    <include name="validateHelpLinkToInfinityPortal" />
                </methods>
            </class>
            <class name="com.infdig.qa.ReleasePresetTests">
                <methods>
                    <include name="deleteAllExistingPresets" />
                    <include name="createInitialPresets" />
                    <include name="changeActivePreset" />
                    <include name="addNewReleasePreset" />
                    <include name="deletePreset" />
                    <include name="addMultiplePresets" />
                    <include name="searchForPresetByName" />
                    <include name="deleteMultiplePresetsAtOnce" />
                    <include name="validateHelpTextIsAccurate" />
                </methods>
            </class>
            <class name="com.infdig.qa.OrderSliceTests">
                <methods>
                    <include name="deleteAllSlices" />
                    <include name="createNewOrderSlice" />
                    <include name="editExistingOrderSlice" />
                </methods>
            </class>
        </classes>
    </test>
</suite>

1 Ответ

1 голос
/ 04 апреля 2020

Ваш исполняющий файл TestNG xml не имеет важных параметров

  • preserve-order = "true" для запуска по порядку. Здесь вы можете найти более подробную информацию.

Я думаю, вы смешиваете метод AfterTest и метод AfterClass, после того как метод test закроет ваш браузер один раз, ПОЧЕМУ? Поскольку в файле xml имеется только 1 тестовый тег, метод AfterTest работает соответственно с тестовыми тегами. Когда вы писали, я понимаю, что вы хотите запустить тестовые методы класса A, а затем класса B, для этого вы должны поместить каждый тег класса в тестовый тег, что означает, что у вас есть 4 тега класса, так что вам нужно 4 тестовых тега.

ИЛИ

Вы можете оставить xml, как указано выше, но вам нужно изменить метод AfterTest на AfterClass.

Вот различия аннотаций:

  • @ AfterTest: аннотированный метод будет запущен после того, как будут выполнены все тестовые методы, принадлежащие классам внутри тега.

  • @ AfterClass: аннотированный метод будет запущен после запуска всех методов теста в текущем классе.

  • @ AfterMethod: The аннотированный метод будет запускаться после каждого метода тестирования.

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