3

いくつかの Web サービスをテストしており、送信する前に wsdl に対して要求 (xml メッセージ) を検証する必要があります。GUI を使用する Soap UI の Pro バージョンでは、それを行うことができます (alt-v) が、自動的に行うことはできません。テストプロジェクトを開始するときに、何らかの方法で自動的に検証する必要があります。ビルド サーバーが起動したら、テスト プロジェクトを実行します。いくつかのグルーヴィーなスクリプトか何かがあるのでしょうか?

もちろん、soap ui にはアサーションがありますが、応答でしか機能しません。

4

2 に答える 2

2

次のスクリプト アサーションを使用できます。

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
于 2013-05-03T14:55:41.327 に答える
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
}
于 2012-10-31T08:23:43.193 に答える