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

时间:2017-11-13 16:37:41

标签: json rest groovy soapui

我有如下所示的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}",
}

}

我该怎么做?

1 个答案:

答案 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())

    }