使用TestNG DataProvider时,有没有办法从SAME Excel工作表中读取和写入参数?

时间:2016-06-29 23:42:58

标签: java excel testng dataprovider

我对Java和TestNG都比较新,所以如果我使用不正确的技术术语,请原谅我。如果我需要纠正自己或澄清,我会密切关注全天的回复。

在我写的自动化测试中,我通过Data Provider通过Excel工作表传递参数。整个部分都很好。但是,我现在想对元素执行getText()并将String返回到Data Provider正在读取的excel表。

这是我的意图的一个例子:

//Grabs Parameters to be used from Excel Sheet
@DataProvider
public Object[][] getData(){
suiteXls = new Xls_Reader(System.getProperty("user.dir")+"//src//testData.xlsx")
List<String> sheetNames = new ArrayList<String>();
sheetNames.add("TestStrings");
return TestUtilFinal.getData(suiteXls,sheetNames);
}

//Test Begins
@Test(dataProvider="getData")
public void Test1(String Value_1, String Operator, String Value_2, String Output){
// do some work here
Output.saveToCell();

我可能会看到的一个问题是,将保存该值的单元格将是动态的。

Here is what the excel sheet would look like before the test is run

Here is what the same sheet would like AFTER the test is run. 任何帮助或见解将不胜感激!感谢

1 个答案:

答案 0 :(得分:0)

  1. 我建议将输入视为不可变。我发现当你修改一个进程的输入时,当你重复该进程时(通常在测试中进行),然后很快就会发现当前结果来自何处。创建一个包含部分/全部输入数据以及输出数据的唯一输出文件通常要好得多。我经常将这样的输出文件命名为构建版本和/或时间戳,以便每个文件都是唯一且可引用的。
  2. 如果您确实想要修改输入,那么您需要引用Excel“行”对象进行测试。例如您可以将这些添加到提供给测试的数据中。
  3. 您的getData方法尚不清楚,但我怀疑您正在使用Apache POI(直接或间接)从Excel工作表中读取数据。 StackOverflow和其他地方有很多例子可以使用Apache POI读取和写入数据行。您只需要维护对测试用例的Row对象的引用,然后知道将输出写入哪个列(cellnum)。