我对如何最好地实现一个简单的DataProvider有点困惑,以前没有这样做过。
我有一个非常简单的逗号分隔的.csv文件:
978KAL,625JBH,876SSH,452GSH
我只需要读入并迭代记录,对每个记录运行相同的测试,直到完成为止。
String csvFile = "src/test/resources/registrationsData.csv";
BufferedReader br = null;
String line = "";
String cvsSplitBy = ",";
@DataProvider(name="getRegistrations")
private Object[] getCSVTestData() {
Object [] registrationsObject;
try {
br = new BufferedReader(new FileReader(csvFile));
while ((line = br.readLine()) != null) {
// use comma as separator
String [] registrations = line.split(cvsSplitBy);
System.out.println( registrations[0] + "," + registrations[1]);
}
} catch//File not found & IOException handling here
registrationsObject = new Object[][]{registrations};
return registrationsObject;
}
@Test(dataProvider = "getRegistrations")
public void getRegistrations(String registration){
Object[] objRegArray = getCSVTestData();
for(int i=0; objRegArray.length>i; i++){
//run tests for every record in the array (csv file)
}
}
我不清楚如何(和/或最好的方式)从objRegArray对象检索每个记录。
我猜这是一个基本的集合问题;谁能给我指正确的路吗?
请使用我下面的解释检查此代码:
package click.webelement.testng;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Iterator;
import java.util.Scanner;
public class OneLineCSV {
final static String CSV_FILE = "/path_to_file/oneline.csv";
final static String DELIMETER = ",";
@DataProvider(name = "test")
public Iterator<Object[]> testDP(){
try {
Scanner scanner = new Scanner(new File(CSV_FILE)).useDelimiter(DELIMETER);
return new Iterator<Object[]>() {
@Override
public boolean hasNext() {
return scanner.hasNext();
}
@Override
public Object[] next() {
return new Object[]{scanner.next()};
}
};
} catch (FileNotFoundException e) {
e.printStackTrace();
return null;
}
}
@Test(dataProvider = "test")
public void testOneLineCSV(String value){
System.out.println(value);
}
}
因此,我将使用scanner
类,这样它就可以方便地将字符串解析为令牌。
我还将在数据提供程序中使用返回迭代器
的功能,因为扫描器
就是这样设计的。您只需用新的迭代器包装它,该迭代器将Scanner.Next()
返回的String
转换为new Object[]{scanner.Next}
。
我有一个扩展测试数据文件(excel/csv)。 我的需求在我的jmx树中,我的第一个http请求应该从ContentName列中获取值,例如:www.sample${ContentName}我需要将JsonPathExtractorApi列作为jp@gc-JSON路径提取器。 请不要说我只需要一个json路径提取器,需要${JsonPathExtractorApi}。对于酒店,我需要提取4次,对
null 一些示例输出数据: *编辑:工作的scala代码行:
问题内容: 您能想到一种很好的方法(也许使用itertools)将迭代器拆分为给定大小的块吗? 因此,with成为迭代器 我可以想到一个小程序来做到这一点,但是使用itertools并不是一个好方法。 问题答案: 在 从配方文件的食谱来靠近你想要什么: 但是,它将使用填充值填充最后一个块。 较不通用的解决方案仅适用于序列,但可以根据需要处理最后一个块 最后,一种可在一般迭代器上运行且其行为符合预期
有存储库文件夹,其中有100个图像文件夹。我想遍历每个文件夹,然后对这些文件夹中的图像执行相同的操作。 例如:存储库—— 有人知道优雅的做法吗? 我的操作系统是MacOS(里面有DS_Store元数据文件)
本文向大家介绍在Java中迭代ArrayList,包括了在Java中迭代ArrayList的使用技巧和注意事项,需要的朋友参考一下 Java中的Iterator用于遍历集合中的每个元素。使用它遍历,获取每个元素,或者甚至可以从ArrList中删除元素。要使用迭代器遍历集合的内容,请首先通过调用集合的iterator()方法来获得一个迭代器,使其到达集合的开头。在那之后,建立一个循环来调用hasNe
我的javafx应用程序中有一个带有ImageViews的HBox,现在我需要一些方法来迭代这个HBox,但是我找不到一个算法来实现它,我试着做了这样的事情: 这里堆栈是我的HBox,但这样的ImageViews会重复,我不想要的。我不知道为什么,所以我该怎么做…