2
我正在測試一些Web服務,我需要在發送之前對wsdl驗證請求(xml消息)。 在使用GUI的肥皂用戶界面的Pro版本中,我可以做到這一點(alt-v),但我無法自動做到這一點。我需要以某種方式自動驗證它,當我開始測試項目。當我們的構建服務器開始運行測試項目時。 可能是有一些groovy腳本或其他東西?肥皂用戶界面。如何在發送前驗證請求?
當然,在soap ui中有斷言,但它只與響應一起工作。
我正在測試一些Web服務,我需要在發送之前對wsdl驗證請求(xml消息)。 在使用GUI的肥皂用戶界面的Pro版本中,我可以做到這一點(alt-v),但我無法自動做到這一點。我需要以某種方式自動驗證它,當我開始測試項目。當我們的構建服務器開始運行測試項目時。 可能是有一些groovy腳本或其他東西?肥皂用戶界面。如何在發送前驗證請求?
當然,在soap ui中有斷言,但它只與響應一起工作。
您可以請嘗試下面的腳本,如果您遇到任何問題,請讓我知道。
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