澄清我在testng扩展报告中的疑虑

时间:2016-10-26 12:42:55

标签: selenium selenium-webdriver testng testng-dataprovider

 @Test(priority = 0)
public void verify_Templete_BG(){
    logger =report.startTest("Verify TempleteBG");
    String expectedBG = "White";
    for(int pageNo = 1; pageNo<=3 ; pageNo++){
        Assert.assertTrue(expectedBG.equals("White"));
    }
    System.out.println("TC1 Pass");
    logger.log(LogStatus.PASS, "TC1 Pass");
}

在上面的示例程序中,我有些疑惑。

  1. 如果循环2失败(循环1和循环3通过)将输出什么。此测试用例是通过还是失败。
  2. 如果循环3失败(循环1和循环2通过)将输出什么。此测试用例是通过还是失败。
  3. 或者,如何知道哪个循环失败。

2 个答案:

答案 0 :(得分:0)

如果任何断言失败,测试用例将立即失败。

您可以添加一些代码并为自己测试不同的结果。将不同循环的actualBG值调整为您想要的任何值。下面的代码是针对案例1设置的,在循环2上失败。

@Test(priority = 0)
public void verify_Templete_BG()
{
    logger = report.startTest("Verify TempleteBG");
    String expectedBG = "White";
    String actualBG = "";
    for (int pageNo = 1; pageNo <= 3; pageNo++)
    {
        switch (pageNo)
        {
            case 1:
                actualBG = "White";
                break;
            case 2:
                actualBG = "Black";
                break;
            case 3:
                actualBG = "White";
                break;
            default:
                break;
        }
        Assert.assertTrue(expectedBG.equals(actualBG));
    }
    System.out.println("TC1 Pass");
    logger.log(LogStatus.PASS, "TC1 Pass");
}

答案 1 :(得分:0)

假设您的是范围报告。范围报告实际上为每个测试用例打印逐步结果。所以你可以将它修改为如下所示。

@Test(priority = 0)
public void verify_Templete_BG(){
    logger =report.startTest("Verify TempleteBG");
    String expectedBG = "White";
    for(int pageNo = 1; pageNo<=3 ; pageNo++){
       if(Assert.assertTrue(expectedBG.equals("White")))
          logger.log(LogStatus.PASS, pageNo +" Loop Passed");
       else
          logger.log(LogStatus.Fail, pageNo +" Loop Failed");
     }  
     report.endTest(logger);
     report.flush();
 }

assertTrue将根据您传入的条件返回true或false。如果为true,则将打印PageNo - Loop传递。否则,您将打印为失败。