我对Groovy和SoapUI测试套件很陌生,当我尝试执行Conditional Goto时,我收到了一个错误。问题是,我有几个REST服务来回答JSON字符串,我想创建一个TestSuite,只有当服务A在其答案中返回特定代码时才会执行服务B.所以,要使事情更清楚:
服务A返回类似
{
"parentObject": {
"myCode": "0",
"severity": "INFO"
},
"message": "operation successfull"
}
如果代码等于" 1"我应该运行服务B,否则不行。我的条件转到:
contains(text(), "1")
还尝试使用contains(., "1")
如果我从条件转到窗口中的运行图标测试这个条件,它会正确解决条件,但如果我从TestSuite运行它,我会得到消息"缺少匹配条件,继续前进"并执行服务B.
Google中只有少数搜索结果与此错误相关联,并且只有其中一个搜索结果我找到了另一个带有Groovy脚本的选项(link here):
import groovy.json.JsonSlurper
responseContent = testRunner.testCase.getTestStepByName("Service A step").getPropertyValue("response")
slurperresponse = new JsonSlurper().parseText(responseContent)
myCode = slurperresponse.parentObject.myCode
if ('1'.equalsIgnoreCase(myCode.toString())) testRunner.gotoStepByName("Service B Step")
else log.info("Some error")
但它没有起作用,这意味着服务B再次被执行,不应该执行的事件。
如果你能在这里伸出援手,我真的很感激这两个选项,如果您知道为什么Conditional Goto显示该错误或为什么服务B使用Groovy脚本执行。
提前谢谢
UPDATE :根据@Rao请求,TestSuite中的步骤列表(抱歉,我无法添加带有真实组件的图像)
答案 0 :(得分:2)
在SoapUI中无法在Conditional Goto中使用JSON。但是你可以用Groovy脚本做到这一点。
以下是https://community.smartbear.com/t5/SoapUI-Open-Source/Conditional-goto/td-p/107276
上的代码段import static com.jayway.jsonpath.JsonPath.parse
def response = context.expand( '${REST Request#Response}' )
def id = parse(response).read('$.id')
log.info id
if (id!=null) testRunner.gotoStepByName("TestStepName")