在 《教你用soapUI测试web服务(一)》 和 《教你用soapUI测试web服务(二)》 中,我们介绍了在创建了第一个 soapUI 项目之后,如何编写并执行测试用例。下面我们将继续介绍剩下的步骤。
第十四步:为TestStep添加断言的按钮。
一旦追加了一个断言,首先出现的是Select Assertion对话框。有若干不同的断言可供选择,在本文中我们只看其中的一个。每种断言类型的更多细节请查看soapUI用户指南。本例中我们将执行一次XPath Query。选中该选项并点击OK。
图15:选择XPath Query断言。
第十五步:选择XPath Query断言。
这一部将会打开XPath Match配置对话框。在这一对话框中,你可以指定一个XPath Epression来取出希望测试的值。此外,你还要指定表达式预期的结果。你在编写表达式和结果的时候,可以用对话框Expected Result 部分的“Select from current”和“Test”按钮测试你的声明。
图16:loginReturn的XPATH校验所用的正则表达式。
第十六步:loginReturn的XPATH校验所用的正则表达式。
在上面图16所示的例子中,你会看到我在回应的XML中找“loginReturn”元素,然后将其与一个10字符(含大小写字母及0-9的数字)正则表达式比较。如果元素值匹配那些参数的话,那个声明应该返回真。这就是为什么我的预期为真的原因。
点击Save的时候,断言就会被添加到测试步骤中去了。你应该就能够在请求窗口底部看到所添加的断言,如图17所示。
图17:XPath Match被添加到请求中。
第十七步: XPath Match被添加到请求中。
此刻,你可以关闭Login请求窗口了。我们已经准备好进入下一个TestStep了。接下来我们要登出。你可以按照做login相同的步骤来添加logout。到了logout请求的时候(如下表5所示),你将会看到需要把login的会话传递过去。
表5:Logout请求XML。
以下是引用片段:
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://soap.rpc.jira.atlassian.com"> <soapenv:Header/> <soapenv:Body> <soap:logout soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <in0 xsi:type="xsd:string">?</in0> </soap:logout> </soapenv:Body> </soapenv:Envelope> |
如果你运行这一请求是没有传递会话,就会得到一个“false”的logoutReturn。这是因为JIRA不知道谁要登出。
要想改正此问题,我们需要把我们login的会话id传递给logout请求。我们用名为Property Transfer的东西做此事。要想添加一个Property Transfer,请点击TestCase窗口的Property Transfer按钮。
图18:TestCase 窗口的Property Transfer按钮。
第十八步:TestCase 窗口的Property Transfer按钮。
在InsertStep对话框中,你可以对属性进行命名。我通常根据用传递的值来命名。
图19:命名Property Transfer。
第十九步:命名Property Transfer。
点击OK时,供添加新元素的Property Transfer窗口就出现了。要想创建一个传输,点击窗口左上角的add new property transfer按钮。
第二十步:添加新的属性传输的按钮。
图20:添加新的属性传输的按钮。
你会再一次被提示对传输进行命名。这是因为你也许想传输多个属性。在这个窗口中,你可以映射多个属性给传输(transfer)。这感觉有点多余,因为我们只处理一个属性,但是如果你有五六个属性需要在请求中转移的话那就很好了。
一旦添加了传输进来就可以对它进行配置了。传输的源端和目的端都需要定义。我们会从loginReturn元素中选择则值,并把它传输给Logout的in0元素。你可以在图21中看到我是如何进行配置的。
第二十一步:设置会话属性传输参数。
如果你点击Property Transfer窗口顶部的绿色箭头,它就会运行传输,然后把结果显示在窗口底部的Transfer Log处。
你会看到上面的例子中“TD9CJdR3F1”这个值出现了,然后也被传输过去了。现在,如果你回去再跑一遍Logout请求,它就会返回真了。在运行时,该值会动态地在两个请求之间转移。
如果你现在看看自己的TestCase,就会看到所有三个元素都列出来了。如果你的元素不是按照正确的次序显示的,只需按所需的次序拖拽它们就行了。
图22:完成login和logout的TestCase。
第二十二步:完成login和logout的TestCase。
继续用窗口顶部工具条的绿色按钮运行你的测试用例。你会注意到状态栏更新和摘要测试日志都显示在TestCase窗口的底部了,如图23所示。
图23:soapUI显示的TestCase测试结果摘要。
第二十三步:soapUI显示的TestCase测试结果摘要。
于是,我们就已经成功设置并运行了我们的第一个JIRA服务测试了。