我想知道如何使用Groovy选择CSV中的随机行。
目前我有两个groovy脚本(实际上有三个,但第三个对这个问题并不重要)。一个groovy脚本被称为“ReadData'它读取csv文件并将其设置为第一行,然后还有另一个名为' SetProperties'就像它所说的那样,将属性值设置为从CSV获得的值。
现在,下面的脚本可以在电子表格第一列下的CSV文件中查找第二行,并将其设置为属性值。我的问题是,如何从电子表格中选择一个随机行,而不是选择第二行(我们不会从电子表格的第一行中选择我们的标题)。
我确实尝试在SetProperties中替换:
testRunner.testCase.setPropertyValue( "id", singleLineArray[0]))
与
testRunner.testCase.setPropertyValue('departureAirportId', String.valueOf((int)Math.random()*singleLineArray[0]))
但没有运气,因为它错了。
答案 0 :(得分:1)
我从来没有使用过Groovy,所以带上一粒盐,但它应该让你更接近你想要的东西。这answer帮助了我:
Random random = new Random(); // initialize this somewhere once in your code
int randomRowId = 1 + random.nextInt(totalRecords); // Random integer between 1 and totalRecords (both inclusive).
testRunner.testCase.setPropertyValue('departureAirportId', DataTable[randomRowId][0]);
testRunner.testCase.setPropertyValue('departureAirportId', String.valueOf((int)Math.random()*singleLineArray[0]))
第二个参数是:
String.valueOf( (int) Math.random() * singleLineArray[0] )
您仍然会提取singleLineArray
的第一个元素,并尝试将其乘以0到1之间的随机浮点数。这就是它无效的原因。