使用soapui验证XML

验证XML消息

采样器TestSteps收到的所有消息都内部转换为对应的XML,这为断言和其他后处理提供了一个共同点。XPath Match和XQuery Match是两个最强大的断言,它们都利用命名技术来提供细粒度的消息验证的可能性。我们来看几个例子吧!

1. XPath 断言

XPath断言将指定的XPath表达式应用于接收到的消息,并根据预期值验证生成的节点。如果值与断言通过匹配,否则失败。让我们跳进去,这是一个我们要验证的登录响应消息;

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sam="http://www.example.org/sample/">    <soapenv:Header/>    <soapenv:Body>       <sam:loginResponse>          <sessionid>10873286937963711</sessionid>       </sam:loginResponse>    </soapenv:Body> </soapenv:Envelope>  

基本上我们要检查SOAP Body中的loginResponse和sessionid元素,但忽略sessionid的实际值,因为它将在每个请求之间进行更改。

首先选择“Assertion”工具栏中的"Add Assertion"按钮,并在提示对话框中选择“XPath Match”断言:

对话框分为两个区域:顶部指定要应用的XPath表达式,并且底部包含预期结果。下一步是指定选择loginResponse元素的XPath表达式;

declare namespace sam=‘http://www.example.org/sample/‘;
//sam:loginResponse[1]

将此表达式输入到顶部编辑字段,然后按下面工具栏中的“Select from current”,如下:

如您所见,“Select from current”操作将XPath表达式应用于基本响应消息,并在“预期结果”字段中显示结果;现在,这是SoapUI将每次接收到新的响应并执行断言时所进行比较的值。如果值不匹配,则断言失败。

1.1. 通配符

显然这里有一个问题; sessionid将每次都会有所不同,这将导致断言失败,我们来使用通配符来解决这个问题;

在上面我们选择了“Allow Wildcards”选项,并用‘*‘替换了sessionid值,这将导致SoopUI在断言结果时忽略sessionid值。

如果我们想要声明整个响应消息,我们可以将配置更改为以下内容:

1.2. XPath向导

在SoapUI Pro中,上述创建的断言或其XPath语句非常简单; XPath Match配置对话框中的左上角的按钮打开一个对话框,允许您为XPath表达式选择所需的目标节点,然后将自动为您创建。对于上述情况,如下所示:

SoapUI Pro还向响应消息的outline视图的右键单击弹出菜单中添加了一些向导;右键单击要在outline视图中断言的节点,将打开以下弹出窗口:

这里的前四个选项都为您创建预配置的XPath断言,例如选择“for Existence”选项创建以下XPath Assertion;

如果我们选择了“for Content matching RegEx”选项,我们将首先被提示输入一个正则表达式,该表达式应用于验证所选节点;

这里我们指定了只匹配数字的“.\d”正则表达式

2. XQuery匹配断言

XQuery Match断言的作用与上述XPath断言一样,唯一的区别在于,使用XQuery表达式代替XPath来选择应该验证的XML,这对于复杂的验证有一些明显的优势;

  • 只能选择所需的节点并将其合并成一个XML结果来断言
  • 可以对结果进行排序,允许您创建不依赖于XML消息中项目顺序的断言等等

这就是一个例子。要验证以下响应消息;

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 	    <soapenv:Header/> 	    <soapenv:Body> 	        <sam:searchResponse> 	            <sam:searchResponse> 	                <item> 	                    <id>1</id> 	                    <description>One handy protocol droid</description> 	                    <price>1</price> 	                </item> 	                <item> 	                    <id>2</id> 	                    <description>Item nr 2</description> 	                    <price>2</price> 	                </item> 	                <item> 	                    <id>3</id> 	                    <description>Item nr 3</description> 	                    <price>3</price> 	                </item> 	                <item> 	                    <id>4</id> 	                    <description>Item nr 4</description> 	                    <price>4</price> 	                </item> 	                <item> 	                    <id>5</id> 	                    <description>Item nr 5</description> 	                    <price>5</price> 	                </item> 	            </sam:searchResponse> 	        </sam:searchResponse> 	    </soapenv:Body> 	</soapenv:Envelope>

现在我们假设你总是期望这些项目,但是订单是未定义的,你只想验证价格。以下XQuery Match断言将会做到这一点:

指定的XQuery表达式选择所有项目,并按其ID排序,然后将价格提取为临时xml结果。按“Select from current”提供响应。

时间: 2024-10-10 09:17:32

使用soapui验证XML的相关文章

DTD验证XML文档

DTD验证XML文档        1.DTD简介:DTD是Document Type Definition的缩写,即文档定义            1.1:DTD的内容包含:                    元素定义规则                    元素之间的关系规则                    属性的定义规则            1.2:DTD的作用如下:                    DTD使每个XML文件可以携带一个自身格式的描述          

用soapUI测试xml格式的HTTP接口

有些HTTP接口是直接传递parameter的,有些HTTP请求是将parameter转换为xml串进行传递的.现在要分享的就是如何用soapUI实现xml串的HTTP接口测试. 工具/原料 soapUI 方法/步骤 1 新建soapUI工程:右击左侧导航面板中的工作空间节点"Project",选择"New soapUI Project",输入工程名称,点击OK 2 新建TestSuite:右击工程名,选择"New Testsuite"   新建

C#使用xsd文件验证XML 格式是否正确

方法一: 我使用XmlReader来处理,因为觉得XmlReader简单点. 我自己做了个例子来说明,例子里的XML不是很复杂,没有子节点的. XML 文件(a.xml): <?xml version="1.0" encoding="utf-8" ?> <PROFILE> <PROFILEID>0001</PROFILEID> <DESCIPTION>我的内容</DESCIPTION> <

XSD(XML Schema Definition)用法实例介绍以及C#使用xsd文件验证XML格式

XSD(XML Schema Definition)用法实例介绍以及C#使用xsd文件验证XML格式 http://blog.csdn.net/gdjlc/article/details/11374787 2013-09-08 12:16 2824人阅读 评论(0) 收藏 举报 分类: XML(5) 版权声明:本文为博主原创文章,未经博主允许不得转载. XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD),作用是定义 XML 文档的合

使用Asp.Net中的XmlValidatingReader来验证XML Schema.

这段时间,我正在学习XML,书上介绍使用Xerces-C或Xerces-J来验证XML文档的Schema或DTD,结果,发现上面的工具不好用. 后来,只有放下书,到书店看看,有没有其他什么书能带来帮助.当检到Professiona ASP.NET XML with C# 这本书时,里面讲到了使用System.Xml 和 System.Xml.Schema命名空间下的XmlTextReader类和XmlValidatingReader类来验证带有Schema或DTD的XML文档.便买下来了. 回寝

Javascript验证xml格式

1 <script> 2 function validateXML(xmlContent) 3 { 4 //errorCode 0是xml正确,1是xml错误,2是无法验证 5 var xmlDoc,errorMessage,errorCode = 0; 6 // code for IE 7 if (window.ActiveXObject) 8 { 9 xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 10 xmlDoc.as

Delphi 7验证XML合法性(利用DTD、XSD)

拥有正确语法的XML被称为“形式良好”的XML.通过DTD验证的XML是“合法”的XML.DTD(文档类型定义)的作用是定义XML 文档的合法构建模块.它使用一系列的合法元素来定义文档结构.XML Schema是基于XML的DTD替代者.XML Schema描述XML文档的结构.XML Schema语言也称作XML Schema定义(XML Schema Definition,XSD).        PowerDesigner是Sybase公司的CASE工具集,也可以用来设计XML模型.在这里

.Net中使用xsd验证xml文档

在.NET中使用XSD可以方便的验证一个XML文档是否符合规范.这里的XSD本质上是一个xml文件,XSD相当于数据库中的表结构或者C#语言中的一个抽象类,它规定了被验证的目标xml的结构,如目标xml具有哪些节点,每个节点的顺序关系,每个节点的数据类型,每个节点的出现次数等信息. .NET中通过XmlReader和XmlReaderSettrings类可以方便的对XML进行验证,示例代码如下: 1         static void Main(string[] args) 2 { 3 //

dskinlite(uieasy mfc界面库)使用记录1: schema验证xml

市场上的MFC第三方库很多,最终选定dskinlite企业版,成熟度比较高,当然价格也略贵. 在2017年仍然使用MFC是有些另类,但特定场景很适用,也适合不愿转型的老程序员. 目前处于学习阶段,欢迎加扣扣交流(80101277) xml达到一定规模后,验证文档有效性成了当务之急,通常有命令行的xmlint.这里推荐xmlspy(有2013破解版). 例如: <color id="system_bg" value="RGB(255,255)" />