3

我正在测试一些 Web 服务,我需要在发送之前针对 wsdl 验证请求(xml 消息)。在使用 GUI 的专业版 Soap UI 中,我可以做到(alt-v),但我不能自动做到。当我开始测试项目时,我需要以某种方式自动验证它。当我们的构建服务器开始运行测试项目时。可能有一些 groovy 脚本或其他东西?

当然,soap ui 中有断言,但它只适用于响应。

4

2 回答 2

2

您可以使用以下脚本断言:

def project = messageExchange.modelItem.testStep.testCase.testSuite.project

def wsdlcontext = project.getInterfaceAt(0).getDefinitionContext()
def validator = new com.eviware.soapui.impl.wsdl.support.wsdl.WsdlValidator(wsdlcontext);

def errors = validator.assertRequest(messageExchange, false)

assert errors.length < 1
于 2013-05-03T14:55:41.327 回答
0

您能否尝试以下脚本,如果您遇到任何问题,请告诉我。

import javax.xml.XMLConstants
import javax.xml.transform.stream.StreamSource
import javax.xml.validation.SchemaFactory

//Load the XSD from a file
def xsd = new File('/C:/schemaFile.xsd').text

//Get the XML from the response
def xmlHolder = new com.eviware.soapui.support.XmlHolder( messageExchange.requestContentAsXml )
def xml = xmlHolder['//result']

def factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI)
def schema = factory.newSchema(new StreamSource(new StringReader(xsd)))
def validator = schema.newValidator()

try {
   validator.validate(new StreamSource(new StringReader(xml)))
} catch( e ) {
   assert false
}
于 2012-10-31T08:23:43.193 回答