2012-10-31 2 views
2

일부 웹 서비스를 테스트 중이므로 보내기 전에 wsdl에 대한 요청 (XML 메시지)의 유효성을 검사해야합니다. GUI를 사용하는 비누 UI의 Pro 버전에서 (alt-v) 할 수는 있지만 자동으로 처리 할 수는 없습니다. 테스트 프로젝트를 시작할 때 자동으로 유효성을 검사해야합니다. 우리 빌드 서버가 테스트 프로젝트를 시작할 때. 그루비 스크립트 또는 다른 것이있을 수 있습니까?비누 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 
관련 문제