場景: 我有一個包含10列測試數據的csv文件。對於每一列我想要一個測試方法。Java testng單個數據提供者多重測試
現在我知道如何使用dataprovider讀取csv文件並將測試數據提供給測試方法。但是,我怎樣才能使用同一個測試提供程序進行多個測試?
我現在寫的數據提供者正在讀取csv文件並遍歷csv。
場景: 我有一個包含10列測試數據的csv文件。對於每一列我想要一個測試方法。Java testng單個數據提供者多重測試
現在我知道如何使用dataprovider讀取csv文件並將測試數據提供給測試方法。但是,我怎樣才能使用同一個測試提供程序進行多個測試?
我現在寫的數據提供者正在讀取csv文件並遍歷csv。
如果我正確理解你的問題,那麼你想要做的是讓你說你有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);
}
}
您可以輕鬆地聲明數據提供者在不同的類和多類重用。看看dataProviderClass parameter of @Test annotation。
只需在每個需要它的測試中指定相同的DataProvider。您可能需要緩存文件內容,以避免多次觸碰文件系統。 – 2014-09-30 00:10:38