我想在Jenkins Console输出中运行硒测试执行时显示Excel(XLSX)测试用例的ID,描述和状态,如下所示。
TC_ID|Test Cases Description|Status
TC01|Verify Login Home|PASS
TC02|Verify Login Screen|FAIL
万一有人做过这种类型的模型,请帮我在Jenkins输出控制台中实现。
答案 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));
}