2017-07-04 23 views
0

我正在自動化運行在多線程環境中的網頁,因此我將每個測試結果導出到文件系統中,並且我希望爲每個測試結果保留唯一的未來參考。那麼是否有一種方法可以將TestNG類中的文件名作爲參數動態傳遞給測試方法。使用TestNG類將動態值傳遞給測試方法參數

我知道我們可以從.xml文件傳遞參數,但如果我這樣做的話,值將更像靜態,並且可以被所有並行運行的線程看到。

測試類將作爲波紋管

public class Test { 

    public static void main(String[] args) throws ParseException { 

     try 
     { 
      TestNG testng = new TestNG(); 
      testng.setTestClasses(new Class[] { Testing.class }); 
      testng.run(); 
     } 
     catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 

    } 
} 

婁代碼主要方法被稱爲是我的測試方法

公共類的測試{

@Test 
@Parameters("filename") 
public void testMethod(String fileName){ 

    System.out.println("filename is: "+fileName); 

    // ---- remaining test logic ----- 
} 

}

,或者我們可以使用TestListenerAdapteronStart()注入參數值的方法...?

回答

1

如果你想唯一的文件名,你可以只是將它加入時間戳

Date date = new Date(); 
Format formatter = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss"); 
String timeStamp = formatter.format(date); 

String fileName = "TestResults-" + timeStamp; 
+0

是的,我可以做到,但即使運行測試用例也是自動完成的! :-)。在執行測試用例之後,我應該對預定時間的生成報告進行跟蹤。如果我依賴時間戳,它不能成爲無錯代碼。如果可能的話,我想創建一個在測試執行時提供所需數據的偵聽器。 –

1

您可以將您的值到ITestContext這將是適用於所有的測試。

您可以在配置方法(例如@BeforeSuite)或偵聽器中設置值。

+0

是的,你是正確的,我正在嘗試使用'TestListenerAdapter'偵聽器,但它沒有發生。如果可能,你可以請張貼一些例子..! –