如何在Jenkins控制台输出中显示测试用例详细信息?

时间:2018-08-09 13:00:42

标签: java selenium jenkins testng

我想在Jenkins Console输出中运行硒测试执行时显示Excel(XLSX)测试用例的ID,描述和状态,如下所示。

TC_ID|Test Cases Description|Status
TC01|Verify Login Home|PASS
TC02|Verify Login Screen|FAIL

万一有人做过这种类型的模型,请帮我在Jenkins输出控制台中实现。

2 个答案:

答案 0 :(得分:0)

如果您在项目中使用TestNG,则使用Reporter类记录的所有内容也会打印在Jenkins控制台输出中:

Reporter.log("This will be displayed in the TestNG report AND in Jenkins console");

注意:您需要添加以下导入:

import org.testng.Reporter;

请参阅this链接以获取在Jenkins中创建TestNG项目的步骤。另外,您也可以创建一个Maven项目,其中的pom文件将执行TestNG测试。

现在,如果要从excel文件中获取数据,则可以使用Apache POI。请参考this链接以获取从excel读取数据的示例。

如果要在测试用例名称旁边打印通过,失败状态,则可以使用ITestResult。假设您正在使用@AfterMethod方法打印数据,则可以执行-

@AfterMethod
public void afterSuite(ITestResult result)
{
  if(result.getStatus() == ITestResult.SUCCESS)
    {
      //pass
    }
  else if(result.getStatus() == ITestResult.FAILURE)
    {
            //fail
    }

  else if(result.getStatus() == ITestResult.SKIP )
    {    
             //skip
    }
}

现在,您可以将每个测试方法的结果与从excel文件中读取的名称一起存储,将其存储在Map中,然后在@AfterSuite方法中逐一打印。

答案 1 :(得分:0)

也许实现监听器会更好,但是您可以使用以下代码:

@AfterMethod(alwaysRun = true)
public void beforeMethod(Method test, ITestResult testResult) {

    //get name of test. if testName annotation is empty get method name.
    String name = firstNonEmpty(
            test.getDeclaredAnnotation(org.testng.annotations.Test.class).testName(),
            test.getName()).get();

    String description = test.getDeclaredAnnotation(org.testng.annotations.Test.class).description();

    //get test result
    String result = "UNKNOWN";
    switch (testResult.getStatus()) {
        case 1:
            result = "SUCCESS";
            break;
        case 2:
            result = "FAILURE";
            break;
        case 3:
            result = "SKIP";
            break;
        case 4:
            result = "SUCCESS_PERCENTAGE_FAILURE";
            break;
        case 16:
            result = "STARTED";
            break;
    }

    //report as you wish..
    System.out.println(String.format("%s|%s|%s", name, description, result));
}