我是SoapUI工具的新手。我使用SoapUI版本5.3.0我的应用程序有几个RESTful API。SoapUI - Load Test -Assertion:使用SoapUI添加断言到负载测试
{
"app_key":"i8gAVDwcAq40n2kAv6Ox+w==",
"targetDB":"${#TestCase#TARGET_DB}",
"createNew": "true"
}
从WebService的响应如下所示::
<StartDataExtractResult xmlns="http://schemas.datacontract.org/2004/07/AriaTechCore" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<StatusCode>1</StatusCode>
<StatusText>success</StatusText>
<RequestNumber>101</RequestNumber>
</StartDataExtractResult>
我使用Groovy脚本来生成我在如下JSON请求的形式发送多个请求到WebService对于“targetDB”如下的动态域名:
def targetdb = ((context.expand('${#TestCase#TARGET_DB}') ?: 100) as Integer) + 1
log.info "Target db for current request : ${targetdb}"
context.testCase.setPropertyValue('TARGET_DB', targetdb.toString())
我设计我的测试数据以这样的方式,在请求加入“targetdb”为“101”的名义将导致建立在日101标签e回应。 负载测试执行正常。
现在我想为每个负载测试响应添加一些断言,以检查StatusCode标记是否包含“1”,StatusText标记包含“成功”& RequestNumber标记包含变量“$ {#TestCase# TARGET_DB}“(以请求json发送)。为了实现这一点我写了一个脚本声明如下:
def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
def holder = groovyUtils.getXmlHolder(messageExchange.responseContent)
holder.namespaces["ns1"] = "http://schemas.datacontract.org/2004/07/AriaTechCore"
def nodeStatusCode = holder.getNodeValue("//ns1:StatusCode")
assert nodeStatusCode != null
if(nodeStatusCode=="1")
{ log.info "Pass" }
else
{ log.info "Fail"}
def nodeStatusText = holder.getNodeValue("//ns1:StatusText")
assert nodeStatusText != null
if(nodeStatusText=="success")
{ log.info "Pass" }
else
{ log.info "Fail"}
def nodeRequestNumber = holder.getNodeValue("//ns1:RequestNumber")
assert nodeRequestNumber != null
if(nodeRequestNumber=="${TARGET_DB}")
{ log.info "Pass" }
else
{ log.info "Fail"}
但我得到一个错误:
No such Property: TARGET_DB for class: Script 53
任何人都可以帮我吗?
不清楚问题是什么?你有没有添加提到的断言,而不是工作?或者你不知道如何添加它们?请澄清。 – Rao
我想为来自WebService(由负载测试套件生成)的10个请求/响应中的每一个创建断言以验证StatusCode是否为“1”,StatusText是“成功”并且匹配值“101”。我已经为单个请求/响应添加了断言。但现在我想为所有的请求/响应做这件事。 – DebanjanB
那么,你可以把请求步骤中提到的断言(在你的情况下是第二个断言)。运行负载测试时,每次都会运行这些测试,以便以后不必做。 – Rao