Testng сообщает все тесты из 2 классов в первом классе - PullRequest
0 голосов
/ 08 мая 2020
   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="MasterTest" **parallel="tests" thread-count="3"** verbose="1">
    <parameter name="runLocal" value="false" />
    <listeners>
        <listener class-name="SupportReport" />
    </listeners>
    <test name="Firefox Tests">
        <parameter name="browser" value="firefox" />
        <classes>
            <class name="CalculatorTest"/>
        </classes>
    </test>
    <test name="Chrome Tests">
        <parameter name="browser" value="chrome" />
        <classes>
            <class name="CalculatorTest"/>
        </classes>
    </test>
</suite>

приведенный выше тест. xml не является дословным ... Я вынул детали пути к классу.

в CalculatorTest 12 @tests. Они запускаются параллельно удаленно на Selenium Grid Hub (2 узла), и консоль показывает, что все они работают успешно.

Итак, выполнено 24 теста, отправляемый по электронной почте отчет содержит только 12 тестов для testname: Firefox Tests.

Когда я проверяю результаты Testng. xml в папке surefire, для первого имени теста указаны все 24 теста (Firefox Tests). нет ссылки на имя теста "Chrome Tests".

введите описание изображения здесь

Вот поворот .... для многих прогонов я получаю правильно составление отчетов. В электронном отчете 2 раздела: 1 для Firefox тестов и 1 для Chrome тестов. каждый из них содержит 12 тестов.

Я уверен, что это не будет проблемой в тестовых средах и производстве, так как они не будут запускаться так, как в dev.

Я действительно хотел бы знать, что как это возможно? каковы внутренние механизмы Testng, когда дело доходит до отслеживания комплектов, методов тестирования, результатов и т. д. c.

Я вижу, как слушатель отчетов извлекает эти артефакты из контекста, списка / карты наборов и результатов.

Также я переопределил метод generatereport, но, насколько я могу судить, только Firefox Тестовые тесты доступны для отчета.

Кто тот эксперт, который мог бы просветить меня по этому c? Я буду поддерживать создание тестов и составление отчетов о них в обозримом будущем :) Так что мне действительно интересно узнать о многих аспектах Testng.

большое спасибо и теплые пожелания,

DJ

1 Ответ

0 голосов
/ 13 мая 2020

извините за медленный ответ. Пару дней меня не было дома.

Спасибо за ответ KM. Я вижу, что вы отвечаете на очень много вопросов. Я признателен за любые усилия, которые вы можете предпринять от моего имени в этом вопросе.

Что касается воспроизведения, это не постоянное поведение. Поскольку я все еще нахожусь в стадии разработки, я запускаю пакет несколько раз. Сначала я вижу все 24 теста. Через некоторое время сообщается только о 12 тестах. Так что это работает, пока не перестает.

Опять же, эти тесты выполняются на удаленном Selenium Grid Hub с отдельным узлом для каждого браузера (Chrome и firefox).

проблема в том, что выполнено 24 теста и только 12 тестов доступны в объекте набора.

Знаете ли вы, как Testng не мог помещать результаты выполненных тестов в список пакетов?

from CustomEmailableReporter:


protected void generateMethodDetailReport(List<ISuite> suites) {    
    m_methodIndex = 0;
    for (ISuite suite : suites) {
        Map<String, ISuiteResult> r = suite.getResults();
        for (ISuiteResult r2 : r.values()) {
            ITestContext testContext = r2.getTestContext();

. . .

Типичный тест:

@Test(priority = 4, dependsOnMethods = { "gettingStartedPage" })
public void childInfoPAge() {

    ChildInfoPage childInfoPage = null;
    stalenessCheck("childGroup");

    // ensure that the page factory is created
    try {
        childInfoPage = new ChildInfoPage(driver);
    } catch (NoSuchElementException e) {
        assertionErrorText = "ERROR:The creation of the ChildInfoPage pagefactory failed";
        Assert.fail(assertionErrorText);
    }

    // ensure that fields are clickable
    assertTrue(isClickable(driver.findElement(By.id("overnightsSpent")), driver));

    // exercise the screen field(s)
    childInfoAPage.overnightSpent.type("78");
    driver.findElement(By.id("ContinueBtn")).click();

    // check for client-side errors
    errorTrap();

    logCalcMessage("childInfoPage", "Test Complete");
    logMessage("------------------------------------------------");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...