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