首页 > 代码库 > [SoapUI]怎样运用Schema通过*.xsd文件来验证response对应的xml文件
[SoapUI]怎样运用Schema通过*.xsd文件来验证response对应的xml文件
添加Groovy Script脚本对Test Step进行验证
脚本如下(已经运行通过):
import javax.xml.XMLConstantsimport javax.xml.transform.stream.StreamSourceimport javax.xml.validation.SchemaFactory//Load the XSD from a filedef xsd = new File(‘D:\\DOAutomationTest\\Automation_Test_DO_IpadForAdvisor_SoapUI\\Schemas\\schema_Clients.xsd‘).textlog.info "xsd = "+xsd//Get the XML from the responsedef response = testRunner.testCase.testSteps["testStepName"].testRequest.response.contentAsStringlog.info "response = "+responsedef 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(response)))} catch( Exception ) {assert false}
一个启发我的Sample(也可以运行成功):
class XmlExamples { static def CAR_RECORDS = ‘‘‘ <records> <car name=‘HSV Maloo‘ make=‘Holden‘ year=‘2006‘> <country>Australia</country> <record type=‘speed‘>Production Pickup Truck with speed of 271kph</record> </car> <car name=‘P50‘ make=‘Peel‘ year=‘1962‘> <country>Isle of Man</country> <record type=‘size‘>Smallest Street-Legal Car at 99cm wide and 59 kg in weight</record> </car> <car name=‘Royale‘ make=‘Bugatti‘ year=‘1931‘> <country>France</country> <record type=‘price‘>Most Valuable Car at $15 million</record> </car> </records> ‘‘‘}def xsd = ‘‘‘<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="records"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" ref="car"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="car"> <xs:complexType> <xs:sequence> <xs:element ref="country"/> <xs:element ref="record"/> </xs:sequence> <xs:attribute name="make" use="required" type="xs:NCName"/> <xs:attribute name="name" use="required"/> <xs:attribute name="year" use="required" type="xs:integer"/> </xs:complexType> </xs:element> <xs:element name="country" type="xs:string"/> <xs:element name="record"> <xs:complexType mixed="true"> <xs:attribute name="type" use="required" type="xs:NCName"/> </xs:complexType> </xs:element></xs:schema>‘‘‘.trim()import javax.xml.XMLConstantsimport javax.xml.transform.stream.StreamSourceimport javax.xml.validation.SchemaFactorydef factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI)def schema = factory.newSchema(new StreamSource(new StringReader(xsd)))def validator = schema.newValidator()validator.validate(new StreamSource(new StringReader(XmlExamples.CAR_RECORDS)))
[SoapUI]怎样运用Schema通过*.xsd文件来验证response对应的xml文件
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。