SoapUI和groovy

时间:2014-04-09 10:43:20

标签: groovy soapui

我们正在使用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") 
}

并创建了属性userNameworkSpaceNameprdAreaIdcount。如何将这些属性传递给休息请求?

2 个答案:

答案 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 Swooeeneyblog post所述的方法。

我的测试套件具有以下结构

-Test Suite
    -Test Case
        -Rest Test Request
        -readNextLine Groovy step

在测试套件级别,我有以下属性。 test suite level properties

在测试用例设置脚本中,我正在读取第一行并将其分配给测试套件级属性。代码是......

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]}"

我在我的测试请求中直接访问这些属性,看起来像这样。 Rest Test Request Properties

最后一步( 必须是最后一步 )我正在阅读下一行并将其设置为测试套件级属性,然后将控件移至第一步测试用例。代码是......

/*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。下面是负载测试运行指标的屏幕抓取。 Load Test Run Numbers

我也在打印正在使用的属性,因此下面是数据使用模式。

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吗?