如何通过程序跳过testNG.xml中提到的类

时间:2016-02-29 06:39:10

标签: java selenium testng

我有一个testNG.xml文件,其中包含10个类,但我有一个包含4个类的列表。我只需要比较并执行列表中的4个测试用例,而不是在testNg.xml中执行所有10个测试用例。可能吗 ?让我知道如何跳过testNG.xml中的6个类

3 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

如果你要执行所需的类,那么将它们包含在TestNG.xml文件中,因为我不知道为什么你不能尝试这个。

通常我更喜欢读取excel文件执行所需的类,并通过脚本编译构建xml文件。信息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");
     }
    }

谢谢你, 穆拉利

答案 2 :(得分:0)

您需要的是AnnotationTransformer

在AnnotationTransformer实现中,您基本上可以读取方法列表,然后检查变换器中的每个TestNG Test方法并更改其属性(在您的情况下,您只需要添加属性enabled = false)对于@Test带注释的方法,如果它不是您正在寻找的方法..

Here是我在某个时候写过的示例注释转换器实现。