SOAPUI:根据xsd架构文件验证响应

SOAPUI:根据xsd架构文件验证响应,xsd,wsdl,soapui,Xsd,Wsdl,Soapui,如何根据定义响应模式的XSD文件验证SOAP响应。我调用的web服务有一个XMLDocument作为输入和输出,因此无法使用WSDL进行响应模式验证。如果您仍然需要它(对SOAP UI版本2.5.1有效): 文件、首选项、编辑器设置、验证响应。使用脚本断言: def project=messageExchange.modelItem.testStep.testCase.testSuite.project def wsdlcontext=project.getInterfaceAt(0).getD

如何根据定义响应模式的XSD文件验证SOAP响应。我调用的web服务有一个XMLDocument作为输入和输出,因此无法使用WSDL进行响应模式验证。

如果您仍然需要它(对SOAP UI版本2.5.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)


assert errors.length<1

您可以使用groovy脚本对xsd文件的响应进行验证。 下面是验证的方法

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;
}

我希望这会对你有所帮助:-)

这不管用,因为我试着不管用

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.
// trim - XSD SCHEME no spaces
def xsdscheme = context.expand('${Properties-XSD_Scheme_Black_and_White#XSDSchemeWhite}')
def xsdscheme2 = xsdscheme.replace(' ', '')
xsdscheme2 = xsdscheme2.replaceAll("[\n\r]", "");
log.info "RES2 TRIMED " + xsdscheme2
def xsdContent = xsdscheme2;

//Take the response into another variable that you have to validate.

Res = context.expand('${#TestCase#WhiteListDecoded}');
def Res2 = Res.replace(' ', '')
Res2 = Res2.replaceAll("[\n\r]", "");
log.info "RES2 TRIMED " + Res2
def actualXMLResponse = Res2

//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;
}

这是如何回答你的问题的?您希望根据定制XSD验证部分响应(这也是我想要实现的)。这个答案展示了如何根据WSDL中的XSD验证响应(soup可以自动做到这一点)