我有如下所示的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)并使用文件中每行中的数据运行我的休息请求。
{
"action":"save",
"value" : {
"title":"${title}",
"description":"${description}",
"type":${type},
"name":"${name}",
"date":${date},
"surname": "${surname}",
}
}
我该怎么做?
答案 0 :(得分:0)
执行此操作的一种方法是获取请求内容,解析它,更改值,再次构建请求,设置请求并发送它。
网上有很多关于如何用像this这样的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())
}