如何获取SOAP UI测试步骤的响应计数

如何获取SOAP UI测试步骤的响应计数,soap,groovy,soapui,Soap,Groovy,Soapui,我的要求是在SOAPUI测试用例中获取每个测试步骤的消息大小和响应计数,并将其存储在oracle数据库coulmn中 第一部分: 我在测试步骤之后使用groovy脚本来获取SOAP UI测试步骤的消息大小。 然后我将值存储在一个名为reponseData的对象中 该对象存储在一个数组中 def resArray = context.getProperty("RES_DATA_ARRAY") def resData = context.getProperty("RESPONSE_DATA") lo

我的要求是在SOAPUI测试用例中获取每个测试步骤的消息大小和响应计数,并将其存储在oracle数据库coulmn中

第一部分: 我在测试步骤之后使用groovy脚本来获取SOAP UI测试步骤的消息大小。 然后我将值存储在一个名为reponseData的对象中 该对象存储在一个数组中

def resArray = context.getProperty("RES_DATA_ARRAY")
def resData = context.getProperty("RESPONSE_DATA")
long messageSize = testRunner.results[testRunner.results.size()-1].getMessageExchanges().size.get(0)
responseData.set.xxxxxxx //Some more values set in responseData object
responseData.setMessageSize(messageSize)
resArray.add(responseData)
第二部分: 稍后在测试用例的拆卸脚本中,我将迭代重新排列,获取每个测试步骤的消息大小值,并将这些数据插入数据库中

我在这个要求的第二部分没有问题。 通过这种方式,我可以得到测试步骤的消息大小


是否有类似的东西可用于获取特定测试步骤的响应计数?

我假设您使用此脚本作为
测试用例的
拆卸脚本,该脚本在
测试用例结束时执行

此脚本没有计算SOAPUI
TestCase
上所有请求和响应的大小,它只计算
teststep
中的一个步骤的大小,更准确地计算
TestCase
中最后一个步骤的大小,因为您正在访问最后一个结果:

testRunner.results[testRunner.results.size()-1]

无论如何,如果要将方法应用于特定
TestStep
的响应,可以在
tearDown脚本中定义一个闭包,并使用它来获得特定的响应大小:

// define the closure
def getResponseSizeByTestStepName = { testStepName ->
    // for each result
    def resp = testRunner.results.find { 
        // compare the testStep name an return the object
        // for the desired one
        if(it.testStep.name.equalsIgnoreCase(testStepName)){
            return it
        }
    }
    return resp.size
}

log.info getResponseSizeByTestStepName('Test Request')
我认为没有其他方法不迭代所有结果列表,因为没有方法可以获得
testStep
的特定结果,例如通过名称或其他引用

更新

在您更改您的问题后,实际上我不太理解您关于“响应计数”的要求,因为有一个来自
testStep
的响应。无论如何,如果您想访问您的响应来处理它,您可以按如下方式更改脚本:

def resArray = context.getProperty("RES_DATA_ARRAY")
def resData = context.getProperty("RESPONSE_DATA")
def result = testRunner.results[testRunner.results.size()-1]
long messageSize = result.getMessageExchanges().size.get(0)
// get the response...
def response result.testStep.getPropertyValue('response')
log.info response
// do something with the response...

responseData.set.xxxxxxx //Some more values set in responseData object
responseData.setMessageSize(messageSize)werqwerwerwerwerqwer
resArray.add(responseData)

希望有帮助,

这个问题解释得不够好。我编辑了它。请您现在检查一下,因为这不是测试用例的消息大小,而是测试步骤。我可以得到消息的大小,这是我正在努力解决的响应计数/@对不起,我还不明白这个问题。您对响应计数的含义是什么?回答的数量?我使用的一些测试步骤可以给出多个回答。我想要的是得到这些响应的计数:)你是说输出中有超过1个XML?我使用的一些测试步骤可能会给出多个响应。我想得到的是这些回复的数量:)