2016-02-29 57 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是我寫了一段時間的示例註釋轉換器實現背部。