SoapUI 中的测试套件和断言






4.80/5 (4投票s)
深入了解测试套件和断言
测试套件
在 soapUI 中,测试套件与任何其他测试工具中的测试套件没有区别。在 soapUI 中,测试套件是分层组织的。一个测试套件可以包含多个测试用例,而一个测试用例又可以包含多个测试步骤。让我们开始在 soapUI 中创建测试套件。我们以一个新的温度单位转换服务 Web 服务为例。其 WSDL 地址为 http://www.webservicex.net/ConvertTemperature.asmx?WSDL。请按照上一篇博文 创建新的 soap 项目,将其命名为“temperature conversion”或您喜欢的任何名称,然后添加上述 WSDL。
现在工作空间的视图将如下所示
现在点击“Request 1”打开请求编辑器。将问号替换为适当的值。例如,温度应为数值,“FromUnit
”和“ToUnit
”应为“degreeCelsius
”或“degreeFahrenheit
”或其他格式类似的温度单位。有关支持的其他单位,请参阅 WSDL 的服务描述。运行请求以查看转换结果。
现在假设我们要创建一个测试用例,我们可以点击请求编辑器中运行按钮旁边的按钮。请看下图
点击按钮后,会弹出一个对话框,询问测试套件的名称。为您的测试套件提供一个合适的名称,然后点击 OK。点击 OK 后,会出现另一个类似的对话框,询问您要创建的测试用例的名称。为测试用例提供一个合适的名称,然后点击 OK。现在会出现另一个对话框,看起来像下图
这是“add request to test case”对话框。现在我们先使用默认设置,只需点击 OK,第一个套件和测试用例就创建好了。工作空间的视图现在应该看起来像下图
您可以看到有一个测试套件,其中有一个测试用例。在测试用例中,有一个测试步骤,其中包含我们当前的请求。您可以点击上图中突出显示的测试步骤编辑器来修改测试用例。您可以为每个测试用例添加任意数量的测试步骤,并为每个测试套件添加任意数量的测试用例。尝试添加几个更多的测试用例和测试套件。
断言
断言是测试用例的重要组成部分,不是吗?它们帮助我们确定结果是否与预期结果相同,或者是否有所不同,从而帮助我们确定测试是否通过。您也可以在 soapUI 的测试步骤中添加断言。一个测试步骤可以添加任意数量的断言,如果任何一个断言失败,该测试步骤就会失败。soapUI 中有一些预定义的断言,我们现在将讨论它们。
1. 包含断言
“Contains assertion”会扫描响应消息以查找期望值,如果找到,则断言通过。如果在响应消息中找不到期望值,则断言失败。其正则表达式格式为 (?s).*(“expected value”).*。但是对于大多数 string
,值可以直接在字段中以纯文本形式编写。让我们看看如何将 contains assertions 添加到测试用例中。通过点击 image 4 中显示的 ConvertTemp
Request 1 来打开测试用例编辑器。‘run’旁边的按钮是‘add assertions’按钮。点击该按钮可以看到 soapUI 的各种断言。‘add assertion’窗口的外观如下
从左侧窗格中,选择“Property Content”,然后会看到该类别下的一系列断言。选择“Contains
”断言,然后点击“Add
”按钮。此时会弹出“Contains Assertion”对话框
在 content 字段中,添加您期望出现在响应消息中的 string
。在这种情况下,我们将温度设为 100 摄氏度,并将其转换为华氏度。根据温度转换公式,华氏度温度 = (摄氏度温度 * 9/5) + 32。
因此,100 摄氏度等于 212 华氏度。所以我们可以添加一个断言,即响应消息应包含 string 212
。因此,只需在 content 字段中写入 212,然后点击“OK”。现在,当我们运行测试用例时,我们会看到断言已通过,因为响应消息包含 string 212
。您也可以编写正则表达式,但请确保选中上图中所示的复选框。
2. 不包含断言
“Not Contains”断言与 Contains assertion 类似。这里的区别在于,如果输入的 string
令牌作为期望值不存在于响应消息中,则断言通过。如果在响应消息中找到期望值,则断言失败。正则表达式与“Contains
”断言类似。可以像“Contains
”断言一样添加它。
3. 非 SOAP 故障断言
“Not SOAP Fault”断言检查我们是否收到一个有效的 soap 响应而不是一个 soap 故障。如果出现 soap 故障,则断言失败。如果响应有效,则断言通过。可以像其他断言一样添加它。此断言不传递任何参数或值,因为它只检查响应是否有效。向测试用例添加一个“Not SOAP Fault”断言,并使用前一个值重新运行测试用例。可以看到断言已通过。现在让我们看看断言失败的情况。在测试用例编辑器中,输入一些随机值。例如,我们可以将 FromUnit
设置为“F
”,将 ToUnit
设置为“C
”。当我们再次运行测试用例时,我们会看到断言失败了,因为响应是一个 soap 故障。
4. SOAP 故障断言
“SOAP Fault”断言与“Not SOAP Fault”断言类似。区别在于,如果出现 soap 故障,则断言通过;如果没有 soap 故障,则断言失败。可以像添加“Not SOAP Fault”断言一样添加它。
5. XPath 匹配断言
此断言用于将 XPath 表达式的结果与预定义值进行比较。在出现 soap 故障的情况下,我们可以检查 ConvertTemp
响应是否具有预期的故障代码或故障 string
。此断言位于“Property Content”断言下。现在选择断言,然后点击“add”按钮。此时会出现 XPath Match 配置窗口。在这里,我们需要在使用任何表达式之前声明命名空间。在这种情况下,我们这样做:
declare namespace soap=’http://schemas.xmlsoap.org/soap/envelope/';
现在 XPath 表达式如下:
//soap:Fault/faultcode
或者,如果我们点击下图所示的“declare”按钮,soapUI 会为我们声明命名空间。
在 expected value 中,我们输入 image 7 中看到的‘faultcode
’节点的值。因此,预期的值为‘soap:Client
’。这就是如何添加“XPath Match assertion”。
还有很多其他的断言,您可以探索它们以获得更好的掌握。
以上是关于 soapUI 中测试用例和断言的一些基本知识。希望对您有所帮助。
注意:WSDL 来自 http://www.webservicex.net。