如何在soapUI中使用测试用例拆卸脚本获取REST请求数据

如何在soapUI中使用测试用例拆卸脚本获取REST请求数据,rest,groovy,soapui,Rest,Groovy,Soapui,我试图将测试用例中每个测试步骤的所有请求和响应数据保存到该测试用例的自定义属性中。我们使用的是在CLI中打开的soapUI 5.3.0,testRunner报告设置为导出到具有测试属性的Junit报告。我们之所以尝试这种方法,是因为定制构建监控系统在查看多个文件时遇到问题,所以我们希望所有内容都包含在一个庞大而丑陋的xml文件中(我们不局限于下面列出的5个属性) 下面的代码处理得更好,并且符合我的要求。尚未通过CLI进行测试,因此我将在可能的时候(很可能是明天)报告 这种方法可以通过CLI获取W

我试图将测试用例中每个测试步骤的所有请求和响应数据保存到该测试用例的自定义属性中。我们使用的是在CLI中打开的soapUI 5.3.0,testRunner报告设置为导出到具有测试属性的Junit报告。我们之所以尝试这种方法,是因为定制构建监控系统在查看多个文件时遇到问题,所以我们希望所有内容都包含在一个庞大而丑陋的xml文件中(我们不局限于下面列出的5个属性)

下面的代码处理得更好,并且符合我的要求。尚未通过CLI进行测试,因此我将在可能的时候(很可能是明天)报告


这种方法可以通过CLI获取WSDL和REST请求+响应,并确认其工作

testRunner.results.each{ testStepResult -> testRunner.testCase.setPropertyValue("${testStepResult.testStep.name}_timeStamp","${testStepResult.timeStamp}")}
testRunner.results.each{ testStepResult -> testRunner.testCase.setPropertyValue("${testStepResult.testStep.name}_timeTaken","${testStepResult.timeTaken}")}
testRunner.results.each{ testStepResult -> testRunner.testCase.setPropertyValue("${testStepResult.testStep.name}_status","${testStepResult.status}")}
testRunner.results.each{ testStepResult ->
    def step = "${testStepResult.testStep.name}"
    try{response = new String(testRunner.testCase.getTestStepByName("$step").testRequest.messageExchange.rawResponseData)}catch(Exception e){e.getMessage()}
    try{request = new String(testRunner.testCase.getTestStepByName("$step").testRequest.messageExchange.rawRequestData)}catch(Exception e){e.getMessage()}
    testRunner.testCase.setPropertyValue("${testStepResult.testStep.name}_response",response)
    testRunner.testCase.setPropertyValue("${testStepResult.testStep.name}_request",request)
    request = ""
    response = ""
}

正如您所看到的,我必须将reqests\responses打包成一个try\catch,因为在测试用例中并不是所有的东西都是REST或WSDL

如果使用SOAPUI_HOME/bin/testrunner(.bat/.sh)命令行实用程序来执行测试,我相信它会自动完成您想要的任务,您不必担心编写所有代码。如果您想快速尝试一下,可以使用不同的方式运行项目,包括ant,它还可以在你机器的挂载驱动器上生成html报告。谢谢你,我真的不想这样做。与我们当前的监控系统集成有点复杂(在现阶段,参与人员的学习曲线可能不是一件好事),并且只能作为最后手段。我已经稍微更新了我的问题,今天晚些时候我将再次讨论这个问题。感谢Rao:)lol的建议,所以我让msgExchange将t4改为
新字符串(testRunner.testCase.getTestStepByName($step”).testRequest.messageExchange.rawRequestData)
,但是现在如果找不到请求数据,脚本就会中断…比如属性转移之类的东西…lol…到达那里:)
testRunner.results.each{ testStepResult -> testRunner.testCase.setPropertyValue("${testStepResult.testStep.name}_timeStamp","${testStepResult.timeStamp}")}
testRunner.results.each{ testStepResult -> testRunner.testCase.setPropertyValue("${testStepResult.testStep.name}_timeTaken","${testStepResult.timeTaken}")}
testRunner.results.each{ testStepResult -> testRunner.testCase.setPropertyValue("${testStepResult.testStep.name}_status","${testStepResult.status}")}
testRunner.results.each{ testStepResult ->
    def step = "${testStepResult.testStep.name}"
    try{response = new String(testRunner.testCase.getTestStepByName("$step").testRequest.messageExchange.rawResponseData)}catch(Exception e){e.getMessage()}
    try{request = new String(testRunner.testCase.getTestStepByName("$step").testRequest.messageExchange.rawRequestData)}catch(Exception e){e.getMessage()}
    testRunner.testCase.setPropertyValue("${testStepResult.testStep.name}_response",response)
    testRunner.testCase.setPropertyValue("${testStepResult.testStep.name}_request",request)
    request = ""
    response = ""
}