SOAPUI: convalida della risposta rispetto al file di schema xsd
Domanda
Come posso convalidare una risposta SOAP su un file XSD che definisce lo schema di risposta. il servizio Web che sto chiamando ha un documento XML come input e output, quindi non è possibile utilizzare WSDL per la convalida dello schema di risposta.
Soluzione
Nel caso tu abbia ancora bisogno di questo (valido per l'interfaccia utente SOAP versione 2.5.1): File, Preferenze, Impostazioni dell'editor, Convalida risposta.
Altri suggerimenti
Usa asserzione di 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)
assert errors.length < 1
È possibile utilizzare lo script groovy per la convalida della risposta rispetto al file xsd. Ecco il modo per convalidare
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;
}
Spero che questo ti possa aiutare :-)