Java 关于 testng 注释传参的一个疑问,希望又大佬给点意见

roc · 2020年01月02日 · 最后由 domains90 回复于 2020年01月09日 · 2783 次阅读

使用 testng 做自动化测试
输出的报告使用 reportng

因为测试用例比较多所以把测试数据都写在了 excel 里
每行为一个条用例

public class Test3  {

int i = 1;
public static HSSFCell Cell;
public static HSSFSheet ExcelSheet;
public static HSSFWorkbook ExcelBook;

@BeforeClass
public void before() throws IOException {
    FileInputStream ExcelFile = new FileInputStream(currentPath + "/lib/excel/test.xls");
    ExcelBook = new HSSFWorkbook(ExcelFile);
    ExcelSheet = ExcelBook.getSheet("Demo_test");
}
@Test(invocationCount = 6 )
public void test1() {i
    Cell = ExcelSheet.getRow(0).getCell(i);
    String cellData = Cell.toString();

    System.out.println(cellData);
    i++;
}

使用的是 testng 的 invocationCount 标签来进行循环
但是这样打印的报告 每一次执行的用例名都为 test1

如果加上 testng 的 description 标签的话,也只会循环打印相同的注释名

如何能让测试方法里的值 传参给 description 呢?

这样报告就可以每一次循环都能打印每条用例名 (用例名从 excel 获取)

我也试过使用@Parameters标签传参,但是好像没有将参数传入进 description 里的

有没有大佬遇到过类似关于报告打印的问题?还又其他的解决方法么?

共收到 5 条回复 时间 点赞

可以试下 extentreports 的报告,里面有结合参数自定义报告中的用例名称

你是要修改 test1 变成对应的描述吗,test1 是方法名...@test 执行的是对应标记的方法,你可以读取 Excel 里的 description 来输出 test1(description,description2) 这样不是更好吗,或者多个@test来运行不同用例

实现下 IReporter 接口,加个监听完事儿。

自己实现这个接口应该就行了

public interface IHookable extends ITestNGListener {
  public void run(IHookCallBack callBack, ITestResult testResult);
}

描述字段是个常量不能修改,如果想要自定义的话,还需要在 reportng 报告中加上一个 ITestResult result;result.getParameters() 的方法来获取 excel 里面的数据,返回类型是 Object[] 数组,把数组中的数据读取然后修改报告中的 setDescription("你解析出来的自定义描述") 就好了

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册