Groovy 如何从CSV文件中选择随机行
我想知道如何使用Groovy在CSV中选择一个随机行 目前我有两个groovy脚本(实际上有三个,但第三个对于这个问题并不重要)。一个groovy脚本称为“ReadData”,它读取csv文件并将其设置为第一行,然后还有另一个称为“SetProperties”的步骤,其中类似的语句将属性值设置为从csv获得的值 现在,下面的脚本可以在电子表格的第一列下查找CSV文件中的第二行,并将其设置为属性值。我的问题不是选择第二行,而是如何从电子表格中随机选择一行(我们从不从电子表格的第一行中选择,因为这是我们的标题) 我确实尝试在SetProperties中替换:Groovy 如何从CSV文件中选择随机行,groovy,Groovy,我想知道如何使用Groovy在CSV中选择一个随机行 目前我有两个groovy脚本(实际上有三个,但第三个对于这个问题并不重要)。一个groovy脚本称为“ReadData”,它读取csv文件并将其设置为第一行,然后还有另一个称为“SetProperties”的步骤,其中类似的语句将属性值设置为从csv获得的值 现在,下面的脚本可以在电子表格的第一列下查找CSV文件中的第二行,并将其设置为属性值。我的问题不是选择第二行,而是如何从电子表格中随机选择一行(我们从不从电子表格的第一行中选择,因为这是
testRunner.testCase.setPropertyValue( "id", singleLineArray[0]))
与
但是没有运气,因为它出错了。可能的解决方案
我从来没有使用过Groovy,所以请对此持保留态度,但它会让您更接近您想要的。这帮助了我:
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]);
你的代码
第二个参数是:
String.valueOf( (int) Math.random() * singleLineArray[0] )
您仍然提取
singleLineArray
的第一个元素,并尝试将其与0到1之间的随机浮点相乘。这是为什么它不起作用。删除Ruby标签,因为这与RuuyOy无关,你应该考虑使用合适的CSV PARSETIM再次进行救援,一旦我完成这个小问题,我会看看CSV解析器。谢谢,我也不太熟悉goovy脚本。这周才开始用。还可以,;我好像没法让它工作。数组“testRunner.testCase.setPropertyValue('departureAirportId',singleLineArray[randomRowId])的状态超出边界异常超出边界?奇怪的totalRecords
的值是多少,singleLineArray
的大小和randomRowId
的值是多少?似乎无法记录数据。总记录数应为6(csv文件中为6行),singleLineArray应为1,且RandomRowId已更改。我得到的错误是java.lang.ArrayIndexOutOfBoundsException:5,但该值在1-5之间更改。抱歉,我感到困惑。它应该是DataTable
,而不是singleLineArray
。我认为singleLineArray
是一个行数组。第18行是testRunner.testCase.setPropertyValue('id',DataTable[randomRowId])代码>
testRunner.testCase.setPropertyValue('departureAirportId', String.valueOf((int)Math.random()*singleLineArray[0]))
String.valueOf( (int) Math.random() * singleLineArray[0] )