如何从CSV文件中选择随机行

时间:2017-01-08 12:33:02

标签: groovy

我想知道如何使用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]))

但没有运气,因为它错了。

1 个答案:

答案 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之间的随机浮点数。这就是它无效的原因。