Validation soapui。如何在发送请求之前验证请求?

Validation soapui。如何在发送请求之前验证请求?,validation,wsdl,request,soapui,Validation,Wsdl,Request,Soapui,我正在测试一些web服务,需要在发送请求(xml消息)之前根据wsdl验证请求。 在使用GUI的SOAPUI的Pro版本中,我可以做到(alt-v),但我不能自动做到。我需要在启动测试项目时以某种方式自动验证它。当构建服务器启动运行测试项目时。 可能有一些groovy脚本或其他东西 当然,在soapui中有断言,但它只处理响应 请尝试下面的脚本,如果您遇到任何问题,请告诉我 import javax.xml.XMLConstants import javax.xml.transform.stre

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


当然,在soapui中有断言,但它只处理响应

请尝试下面的脚本,如果您遇到任何问题,请告诉我

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
}

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

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
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)
断言错误。长度<1