肥皂用户界面。如何在发送之前验证请求?

时间:2012-10-31 06:54:51

标签: validation wsdl request soapui

我正在测试一些Web服务,我需要在发送之前验证针对wsdl的请求(xml消息)。 在使用GUI的Pro版本的Soap UI中我可以做到(alt-v),但我无法自动完成。当我开始测试项目时,我需要以某种方式自动验证它。当我们的构建服务器启动运行测试项目时。 可能有一些groovy脚本或其他东西?

当然,在肥皂ui中有断言,但它只与回应有关。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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
}