2014-09-29 71 views
2

場景: 我有一個包含10列測試數據的csv文件。對於每一列我想要一個測試方法。Java testng單個數據提供者多重測試

現在我知道如何使用dataprovider讀取csv文件並將測試數據提供給測試方法。但是,我怎樣才能使用同一個測試提供程序進行多個測試?

我現在寫的數據提供者正在讀取csv文件並遍歷csv。

+0

只需在每個需要它的測試中指定相同的DataProvider。您可能需要緩存文件內容,以避免多次觸碰文件系統。 – 2014-09-30 00:10:38

回答

2

如果我正確理解你的問題,那麼你想要做的是讓你說你有10列,這10列需要分別作爲測試數據傳遞給10個測試方法,但你希望數據提供者相同。我的建議: 1)將方法參數傳遞給您的數據提供者。 2)將整個CSV文件加載到二維數組中。 3)基於返回該列數據作爲該測試的測試數據的測試方法名稱。 類似下面:

import java.lang.reflect.Method; 

import org.testng.annotations.DataProvider; 
import org.testng.annotations.Test; 

public class TestNGTest { 
    @DataProvider 
    public Object[][] dp(Method method) 
    { 
     System.out.println("Test method : "+method.getName()); 
     if(method.getName().equals("test1")) 
      return new Object[][]{{method.getName()}}; 
     else if(method.getName().equals("test2")) 
      return new Object[][]{{method.getName()}}; 
     else 
      return new Object[][]{}; 
    } 

    @Test(dataProvider="dp") 
    public void test1(String name) 
    { 
     System.out.println("DP -->"+name); 
    } 

    @Test(dataProvider="dp") 
    public void test2(String name) 
    { 
     System.out.println("DP -->"+name); 
    } 
} 
相關問題