java - Testng 报告头等舱 2 个类(class)的所有测试

标签 java eclipse selenium maven testng

   <?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>

上面的testng.xml不是逐字的...我取出了类路径详细信息。

CalculatorTest 中有 12 个 @test。它们在 Selenium Grid Hub(2 个节点)上远程并行运行,控制台显示它们全部运行成功。

总共执行了 24 个测试,可通过电子邮件发送的报告仅包含测试名称:Firefox Tests 的 12 个测试。

当我检查 Surefire 文件夹中的 Testng-results.xml 时,它列出了第一个测试名称(Firefox 测试)的所有 24 个测试。没有提及“Chrome Tests”测试名称。

enter image description here

这是一个转折点......对于许多运行,我确实得到了正确的报告。可通过电子邮件发送的报告中有 2 个部分,其中 1 个部分用于 Firefox 测试,1 个部分用于 Chrome 测试。每个包含 12 个测试。

非常确定这在测试环境和生产中不会成为问题,因为它们不会像在开发中那样运行。

我真正想知道的是这怎么可能?在跟踪套件、测试方法、结果等方面,Testng 的内部工作原理是什么?

我可以看到报告监听器从上下文、套件列表/ map 和结果中提取这些 Artifact 。

我还重写了generatereport方法,但据我所知,只有Firefox Test测试可用于报告。

谁是可以在这个主题上启发我的专家?在可预见的 future ,我将支持测试的创建和报告:)所以我对 Testng 的很多方面都很好奇。

非常感谢和热烈的问候,

DJ

最佳答案

抱歉,回复较慢。我离开家几天了。

感谢您的回复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("------------------------------------------------");
}

关于java - Testng 报告头等舱 2 个类(class)的所有测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61685421/

相关文章:

python - 如何使用 Selenium 单击此项目?

java - gradle:没有源任务 ':processTestResources'和 ':processtResources'

java - TestNG 数据提供程序中的 NumberFormatException

java - 你如何在java中获取float的尾数?

java - 无法在struts2中通过jdbc从数据库存储和检索图像数据

java - JPA - @PreRemove 方法行为

java - Math.round在android中给出一个十进制数

eclipse - 在 Spring + eclipse 中配置 JUnit 4

java - Eclipse:可以在单独的列中显示断点吗?

java - Chrome 不断在新选项卡中打开 pdf 文件