2012-10-31 52 views
2

我正在測試一些Web服務,我需要在發送之前對wsdl驗證請求(xml消息)。 在使用GUI的肥皂用戶界面的Pro版本中,我可以做到這一點(alt-v),但我無法自動做到這一點。我需要以某種方式自動驗證它,當我開始測試項目。當我們的構建服務器開始運行測試項目時。 可能是有一些groovy腳本或其他東西?肥皂用戶界面。如何在發送前驗證請求?

當然,在soap ui中有斷言,但它只與響應一起工作。

回答

0

您可以請嘗試下面的腳本,如果您遇到任何問題,請讓我知道。

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