我正在使用免费版的soapui。在我的负载测试中,我想从文本文件中读取请求字段值。该文件如下所示
0401108937
0401109140
0401109505
0401110330
0401111204
0401111468
0401111589
0401111729
0401111768
在负载测试中,对于每个请求,我想按顺序读取此文件。我正在使用Unique property per SoapUI request using groovy中提到的代码来读取文件。如何以顺序方式使用文件中的值?
我有以下测试设置脚本来读取文件
def projectDir = context.expand('${projectDir}') + File.separator
def dataFile = "usernames.txt"
try
{
File file = new File(projectDir + dataFile)
context.data = file.readLines()
context.dataCount = context.data.size
log.info " data count" + context.dataCount
context.index = 0; //index to read data array in sequence
}
catch (Exception e)
{
testRunner.fail("Failed to load " + dataFile + " from project directory.")
return
}
在我的测试中,我将以下脚本作为测试步骤。我想从数组中读取当前索引记录,然后递增索引值
def randUserAccount = context.data.get(context.index);
context.setProperty("randUserAccount", randUserAccount)
context.index = ((int)context.index) + 1;
但是使用这个脚本,我总是获得数组的第二条记录。索引值没有递增。
答案 0 :(得分:0)
您将变量context.index定义为0并且只执行+1
您可能需要一个循环来读取所有值。
类似的东西:
for(int i=0; i <context.data.size; i++){
context.setProperty("randUserAccount", i);
//your code
}
答案 1 :(得分:0)
您可以将此安装脚本添加到安装脚本部分以进行负载测试,并使用以下命令访问groovy脚本测试步骤中的值:
context.LoadTestContext.index =((int)context.LoadTestContext.index)+1
答案 2 :(得分:0)
这可能是一个迟到的回复,但我的负载测试有一段时间我遇到了同样的问题。使用index作为全局属性为我解决了这个问题。
最初将索引设置为-1。下面的代码会将索引递增1,将递增的值设置为全局属性,然后选择该索引的上下文数据。
<confirmationNumber>${=com.eviware.soapui.SoapUI.globalProperties.setPropertyValue( "index", (com.eviware.soapui.SoapUI.globalProperties.getPropertyValue( "index" ).toLong()+1 ).toString()); return (context.data.get( (com.eviware.soapui.SoapUI.globalProperties.getPropertyValue( "index" )).toInteger())) }</confirmationNumber>