![](/img/trans.png)
[英]TestNg Printing the value of the parameters when the data input provider is a CSV file
[英]TestNG - Passing a CSV file with input data for all tests
我在單元測試中使用TestNG框架。 使用DataProvider批注,我能夠成功地將輸入數據從CSV文件傳遞到測試方法。
問題是我的測試類中有幾種測試方法,每種方法都需要不同的數據集作為測試的輸入。 所有輸入都存在於單個csv文件中。 我知道我可以通過在類級別使用DataProvider注釋來指定單個輸入文件。 但是,是否可以通過僅使用輸入CSV文件中的特定數據來運行測試文件中的每個測試用例的方法?
為了更清楚一點,我的測試類(例如TestDemo)將具有3種測試方法(例如test1,test2,test3)。 有一個CSV文件,其中包含所有3種方法的測試數據。 無論如何,我可以將其指定為輸入文件,但僅使用用於該測試的數據運行每個測試嗎?
提前致謝。
我使用Apache Metamodel讀取@DataProvider方法中的.CSV文件並返回二維數組。 很簡單
我在這里寫了一個使用TestNG 的示例 。 具體來說, 這個類 。
請記住,如果將電子表格行中的所有項目都放入Object [],則可以將其作為單個對象直接傳遞給測試方法,而且@BeforeMethod能夠在實際測試之前訪問該行數據甚至開始。 這是JUnit 4.x無法做到的。
TestNG不支持此功能,但是您應該能夠輕松地對其進行調整。 例如:
public class TestDemo {
private static Object[][] data() {
/* Your original data provider code that returns test data for each test method.
* You may wish to cache the result using memoization to avoid reading the CSV file
* multiple times. */
}
@DataProvider(indices = 0)
public static Object[][] data1() {
return data();
}
@Test(dataProvider = "data1")
public void test1(/* test 1 data parameters */) {
/* test 1 code */
}
@DataProvider(indices = 1)
public static Object[][] data2() {
return data();
}
@Test(dataProvider = "data2")
public void test2(/* test 2 data parameters */) {
/* test 2 code */
}
@DataProvider(indices = 2)
public static Object[][] data3() {
return data();
}
@Test(dataProvider = "data3")
public void test3(/* test 3 data parameters */) {
/* test 3 code */
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.