我们正在使用soupUI
对REST Web服务执行负载测试。我们有一个接受3个参数的测试用例。由于我们没有使用soupUI pro,我们正在编写groovy来读取文本文件并将参数发送到REST服务。当groovy脚本运行时它工作正常,当我们运行testcase参数时不会传递。下面是groovy脚本。
import com.eviware.soapui.support.XmlHolder
def size
File fileValues = new File("C:/Input.txt")
List lines=fileValues.readLines()
size = lines.size.toInteger()
propTestStep = context.testCase.getTestStepByName("looper-props")
for( counter in 0..size-1)
{
tempValue = lines[counter]
inputValues=[]
inputValues=tempValue.split(",")
userName= inputValues[0]
workSpaceName= inputValues[1]
productId= inputValues[2]
iteration=inputValues[3]
propTestStep.setPropertyValue("userName", userName)
propTestStep.setPropertyValue("workSpaceName", workSpaceName)
propTestStep.setPropertyValue("prdAreaId", productId)
propTestStep.setPropertyValue("count", iteration)
testRunner.runTestStepByName("workSpace")
}
并创建了属性userName
,workSpaceName
,prdAreaId
和count
。如何将这些属性传递给休息请求?
答案 0 :(得分:0)
我想我的方法可能适合你。
据我了解,您希望在休息服务的soapUI中运行负载测试。在您的测试用例中,您正在读取文本文件(以逗号分隔),设置属性值并运行其余的测试请求。
我创建了一个测试套件,用于演示您想要做什么。出于本演示的目的,我使用了GeoNames free webservice which returns a Json response。如果你想运行我的测试套件,我建议你创建自己的用户名。
文本文件如下所示。 (注意我没有标题行)
44.1,-22.4,55.2,-9.9, fr, demo
44.1,-22.4,55.2,-9.9,en, demo
44.1,-22.4,55.2,-9.9,de, demo
44.1,-22.4,55.2,-9.9,en, demo
我正在使用Mike Swooeeney的blog post所述的方法。
我的测试套件具有以下结构
-Test Suite
-Test Case
-Rest Test Request
-readNextLine Groovy step
在测试套件级别,我有以下属性。
在测试用例设置脚本中,我正在读取第一行并将其分配给测试套件级属性。代码是......
def fPath = context.expand('${#TestSuite#TestDataFilePath}')
//Create a new filereader object, using the context variable so it can be used between test components
context.fileReader = new BufferedReader(new FileReader(fPath))
//Read in the first line of the data file
firstLine = context.fileReader.readLine()
//Split the first line into a string array and assign the array elements to various test case properties
String[] propData = firstLine.split(",")
testCase.testSuite.setPropertyValue("north",propData[0])
testCase.testSuite.setPropertyValue("east",propData[1])
testCase.testSuite.setPropertyValue("west",propData[2])
testCase.testSuite.setPropertyValue("south",propData[3])
testCase.testSuite.setPropertyValue("lang",propData[4])
testCase.testSuite.setPropertyValue("username",propData[5])
log.info "Read data north=${propData[0]};east=${propData[1]};west=${propData[2]};south=${propData[3]};language=${propData[4]};username=${propData[5]}"
我在我的测试请求中直接访问这些属性,看起来像这样。
最后一步( 必须是最后一步 )我正在阅读下一行并将其设置为测试套件级属性,然后将控件移至第一步测试用例。代码是......
/*Read in the next line of the file
We can use the same fileReader created in the Setup script because it
was assigned to the context variable.*/
nextLine = context.fileReader.readLine()
/*If the end of the file hasn't been reached (nextLine does NOT equal null)
split the line and assign new property values and go back to the first
test request step*/
if(nextLine != null){
String[] propData = nextLine.split(",")
curTSuite = testRunner.testCase.testSuite
curTSuite.setPropertyValue("north",propData[0])
curTSuite.setPropertyValue("east",propData[1])
curTSuite.setPropertyValue("west",propData[2])
curTSuite.setPropertyValue("south",propData[3])
curTSuite.setPropertyValue("lang",propData[4])
curTSuite.setPropertyValue("username",propData[5])
log.info "Read data north=${propData[0]};east=${propData[1]};west=${propData[2]};south=${propData[3]};language=${propData[4]};username=${propData[5]}"
testRunner.gotoStep(0)
}
最后,在测试用例拆解脚本中,我正在关闭文件阅读器。代码是......
context.fileReader.close()
log.info "file closed"
我已经为这个测试用例创建了一个负载测试,并使用Simple Strategy运行它10秒,有5个线程,延迟为1000 miliSecond,随机为0.5。下面是负载测试运行指标的屏幕抓取。
我也在打印正在使用的属性,因此下面是数据使用模式。
Thu Apr 10 20:50:26 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language= fr;username= demo
Thu Apr 10 20:50:26 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language= fr;username= demo
Thu Apr 10 20:50:26 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language= fr;username= demo
Thu Apr 10 20:50:26 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language= fr;username= demo
Thu Apr 10 20:50:26 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language= fr;username= demo
Thu Apr 10 20:50:32 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=en;username= demo
Thu Apr 10 20:50:32 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=en;username= demo
Thu Apr 10 20:50:32 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=en;username= demo
Thu Apr 10 20:50:32 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=en;username= demo
Thu Apr 10 20:50:32 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=en;username= demo
Thu Apr 10 20:50:32 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=de;username= demo
Thu Apr 10 20:50:32 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=de;username= demo
Thu Apr 10 20:50:33 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=de;username= demo
Thu Apr 10 20:50:33 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=de;username= demo
Thu Apr 10 20:50:33 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=de;username= demo
Thu Apr 10 20:50:33 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=en;username= demo
Thu Apr 10 20:50:33 ADT 2014:INFO:file closed
Thu Apr 10 20:50:33 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language= fr;username= demo
Thu Apr 10 20:50:33 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=en;username= demo
Thu Apr 10 20:50:33 ADT 2014:INFO:file closed
Thu Apr 10 20:50:33 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language= fr;username= demo
Thu Apr 10 20:50:33 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=en;username= demo
Thu Apr 10 20:50:33 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=en;username= demo
Thu Apr 10 20:50:33 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=en;username= demo
Thu Apr 10 20:50:33 ADT 2014:INFO:file closed
Thu Apr 10 20:50:33 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language= fr;username= demo
Thu Apr 10 20:50:33 ADT 2014:INFO:file closed
Thu Apr 10 20:50:33 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language= fr;username= demo
Thu Apr 10 20:50:34 ADT 2014:INFO:file closed
Thu Apr 10 20:50:34 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language= fr;username= demo
Thu Apr 10 20:50:34 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=en;username= demo
Thu Apr 10 20:50:34 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=de;username= demo
Thu Apr 10 20:50:34 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=en;username= demo
Thu Apr 10 20:50:34 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=en;username= demo
Thu Apr 10 20:50:34 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=de;username= demo
Thu Apr 10 20:50:34 ADT 2014:INFO:file closed
Thu Apr 10 20:50:34 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language= fr;username= demo
Thu Apr 10 20:50:34 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=en;username= demo
Thu Apr 10 20:50:34 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=en;username= demo
Thu Apr 10 20:50:35 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=en;username= demo
Thu Apr 10 20:50:35 ADT 2014:INFO:file closed
Thu Apr 10 20:50:35 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language= fr;username= demo
Thu Apr 10 20:50:35 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=de;username= demo
Thu Apr 10 20:50:35 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=de;username= demo
Thu Apr 10 20:50:35 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=en;username= demo
Thu Apr 10 20:50:35 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=en;username= demo
Thu Apr 10 20:50:35 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=de;username= demo
Thu Apr 10 20:50:35 ADT 2014:INFO:file closed
Thu Apr 10 20:50:35 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language= fr;username= demo
Thu Apr 10 20:50:35 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=en;username= demo
Thu Apr 10 20:50:35 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=en;username= demo
Thu Apr 10 20:50:35 ADT 2014:INFO:file closed
Thu Apr 10 20:50:35 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language= fr;username= demo
Thu Apr 10 20:50:35 ADT 2014:INFO:file closed
Thu Apr 10 20:50:35 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language= fr;username= demo
Thu Apr 10 20:50:35 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=en;username= demo
Thu Apr 10 20:50:35 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=de;username= demo
Thu Apr 10 20:50:35 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=en;username= demo
Thu Apr 10 20:50:36 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=en;username= demo
Thu Apr 10 20:50:36 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=de;username= demo
Thu Apr 10 20:50:36 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=en;username= demo
Thu Apr 10 20:50:36 ADT 2014:INFO:file closed
Thu Apr 10 20:50:36 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language= fr;username= demo
Thu Apr 10 20:50:36 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=en;username= demo
Thu Apr 10 20:50:36 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=de;username= demo
Thu Apr 10 20:50:36 ADT 2014:INFO:file closed
Thu Apr 10 20:50:36 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language= fr;username= demo
Thu Apr 10 20:50:36 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=en;username= demo
Thu Apr 10 20:50:36 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=en;username= demo
Thu Apr 10 20:50:36 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=de;username= demo
Thu Apr 10 20:50:36 ADT 2014:INFO:file closed
Thu Apr 10 20:50:36 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=en;username= demo
Thu Apr 10 20:50:36 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=en;username= demo
Thu Apr 10 20:50:36 ADT 2014:INFO:file closed
Thu Apr 10 20:50:36 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=de;username= demo
Thu Apr 10 20:50:36 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=en;username= demo
Thu Apr 10 20:50:36 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=en;username= demo
Thu Apr 10 20:50:37 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=de;username= demo
Thu Apr 10 20:50:37 ADT 2014:INFO:file closed
Thu Apr 10 20:50:37 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=en;username= demo
Thu Apr 10 20:50:37 ADT 2014:INFO:file closed
Thu Apr 10 20:50:37 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=en;username= demo
Thu Apr 10 20:50:37 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=de;username= demo
Thu Apr 10 20:50:37 ADT 2014:INFO:Read data north=44.1;east=-22.4;west=55.2;south=-9.9;language=en;username= demo
Thu Apr 10 20:50:37 ADT 2014:INFO:file closed
最后,我想知道为什么要使用soapUI进行负载测试。虽然它具有负载测试功能,但它绝对是错误的工具。看看JMeter,loadrunner或其他性能测试工具。
我的测试套件是available at Mega.co.nz
希望这有帮助。
请记住在使用之前对下载的文件进行病毒扫描。
答案 1 :(得分:0)
SoapUI是一种功能测试工具。你确定你不是指LoadUI吗?