SOAPUI: Validar la respuesta contra el archivo de esquema xsd
Pregunta
¿Cómo puedo validar una respuesta SOAP contra un archivo XSD que define el esquema de respuesta? el servicio web al que llamo tiene un documento XML como entrada y salida, por lo que no puede usar WSDL para la validación del esquema de respuesta.
Solución
En caso de que todavía necesite esto (válido para SOAP UI versión 2.5.1): Archivo, Preferencias, Configuración del editor, Validar respuesta.
Otros consejos
Usar aserción de script:
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)
afirmar errores.length < 1
Puede usar el script maravilloso para validar la respuesta contra el archivo xsd. Aquí está la forma de validar
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.SchemaFactory;
import javax.xml.XMLConstants;
//Read your xsd file and get the conten into a variable like below.
def xsdContent = "Some Schema Standard";
//Take the response into another variable that you have to validate.
def actualXMLResponse = "Actual XML Response ";
//create a SchemaFactory object
def factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
//Create a given schema object with help of factory
def schema = factory.newSchema(new StreamSource(new StringReader(xsdContent ));
//Create a validator
def validator = schema.newValidator();
//now validate the actual response against the given schema
try {
validator.validate(new StreamSource(new StringReader(actualXMLResponse )));
} catch(Exception e) {
log.info (e);
assert false;
}
Espero que esto te ayude :-)