如何从excel或其他类型的文件中读取参数,并使用groovy脚本逐个运行其余的API请求



我有如下的soap ui项目结构:TestSuite测试用例测试步骤休息请求(json)

我想从如下文件(例如)中获取数据:

title description type name date surname
myTitle myDescription 111111 Maria 2017-01-01 Romano
myTitle myDescription1 222222 John 2017-01-02 Soprano
myTitle2 myDescription2 333333 Robert 2017-01-03 Hermano

(任何文件:xls,csv,json),并使用文件中每行的数据运行我的rest请求。

{
"action":"save",
"value" : {  
"title":"${title}",
"description":"${description}",
"type":${type},
"name":"${name}",
"date":${date},
"surname": "${surname}",
}
}

我该怎么做?

实现这一点的一种方法是获取请求内容,解析它,更改值,再次构建请求,设置请求并发送它。

网上有很多关于如何用groovy解析excel的参考资料。环顾四周,你可能会找到更多的方法。所以如果在解析excel后,这些groovy变量中有值,

title
description
type name 
date 
urname

然后,对于一个测试用例,您可以执行以下操作。我将对一个变量title进行解释,其他变量也可以这样做。将其放在测试用例的groovy测试步骤中,然后运行

import groovy.json.*
//get the test step
getAllHttpSteps=testRunner.testCase.getTestStepsOfType(com.eviware.soapui.impl.wsdl.teststeps.RestTestRequestStep)
for (step in getAllHttpSteps){
//get request content
RawRequest = step.testRequest.getRequestContent()
//Parse Json request content
def slurper = new JsonSlurper()
def parsed_MessageBody = slurper.parseText(RawRequest)
//get the node you want to change and its new node value
def TitleKey= value.title   //from your json 
//change desired json node in request
def node= "parsed_MessageBody"+"."+TitleKey
Eval.me('parsed_MessageBody', parsed_MessageBody, "$node = '$title'")

//Build Json request again with new values
def builder = new JsonBuilder(parsed_MessageBody)
def json = builder.toPrettyString()
json = groovy.json.StringEscapeUtils.unescapeJava(json)

//set new request content to request
step.testRequest.setRequestContent(json)
//Run new request
step.run(testRunner,testRunner.getRunContext())
}

最新更新