2016-02-29 59 views
2

我有一个包含10个类的testNG.xml文件,但是我有一个包含4个类的列表。我只需要比较并执行列表中的4个测试用例,而不是在testNg.xml中执行全部10个测试用例。可能吗 ?给我一些想法,如何跳过testNG.xml中的6个类如何通过程序跳过testNG.xml中提到的类

回答

1

高达上的要求,下面是简单的方式通过Excel数据创建的testng.xml。

让我们假设在excel文件中,工作表0中,我将写出所有具有状态Y/N意味着可执行或不可执行的类。所以表中的第一行(i = 0)除了在单元0中具有作为测试用例的头部并且在单元1中可执行外。

如果来自i = 1的任何行的单元格1只是具有可执行文件的类别为Y,那么我需要将这个类添加到我的测试中,然后将此测试添加到我的套件中,最后需要执行此套件。

// TODO Auto-generated method stub 

    XmlSuite suite = new XmlSuite(); 
    suite.setName("TmpSuite"); 

    XmlTest test = new XmlTest(suite); 
    test.setName("TmpTest"); 
    List<XmlClass> classes = new ArrayList<XmlClass>(); 
    List<XmlSuite> suites = new ArrayList<XmlSuite>(); 

    FileInputStream file=new FileInputStream(new File("D:\\TestCases.xlsx")); 

    XSSFWorkbook workbook=new XSSFWorkbook(file); 

    XSSFSheet sheet=workbook.getSheetAt(0); 

    for(int i=1; i<sheet.getPhysicalNumberOfRows(); i++){ 

     if(sheet.getRow(i).getCell(1).getStringCellValue().equals("Y")){ 


      classes.add(new XmlClass(sheet.getRow(i).getCell(0).getStringCellValue())); 

     } 

    } 

    test.setXmlClasses(classes) ; 
    suites.add(suite); 
    TestNG tng = new TestNG(); 
    tng.setXmlSuites(suites); 
    tng.run(); 
0

如果您要执行所需的类,然后将其包含在TestNG.xml文件中,因为我不确定为什么您无法尝试此操作。

通常我会更喜欢阅读所需的类,这是从Excel文件执行所需的,并通过脚本构建xml文件。 info here

无论如何,根据您的要求,您可以使用skipexecution根据您的条件跳过测试。

@Test 
public void testCaseSkipException(){ 
    //if my condition is true then i will going to below skipException to skip execution 
     if(your_condition){ 
     throw new SkipException("Skipping this exception"); 
    } 
    } 

谢谢你, 穆拉利

+0

我知道有可能动态创建testNG.xml。但有没有什么办法通过Excel工作表数据创建一个动态的testNG.xml?请举例。由于我们通过testNG.xml执行脚本,因此我不确定如何使动态testng.xml成为可执行文件。 – ArrchanaMohan

+0

看到我的新答案...谢谢 –

0

你需要的是一个AnnotationTransformer

在您AnnotationTransformer实现,你基本上可以阅读你的方法列表,然后检查该进入你的主变差动每个TestNG的测试方法,并更改其属性(在你的情况,你只需要为@Test注释的方法添加属性enabled = false),如果它不是你正在寻找的方法。

Here是我写了一段时间的示例注释转换器实现背部。