什么是断言?
断言是指肯定或陈述某事的行为。也可以将其解释为检查点或验证点。
将请求发送到Web服务器后,就会收到响应。我们需要验证响应是否包含我们期望的数据。为了验证响应,我们需要使用断言。
XPATH匹配声明
使用XPath表达式选择目标节点及其值。XPath是一种XML查询语言,用于从XML文档中选择节点。
步骤1:现在,点击“添加新断言”按钮后,
- 选择断言类别。
- 选择断言类型–在这种情况下为“ XPath Match”
- 点击“添加”
步骤2:“添加XPath窗口”打开。
在添加XPath之前,我们需要声明NameSpace。XML名称空间是由统一资源标识符(URI)引用标识的名称的集合,这些名称在XML文档中用作元素和属性名称。SOAP UI XPath断言中使用相同的内容。
对于声明XML命名空间,我们只需要单击“声明”按钮即可为我们完成工作,否则我们也可以自己手动声明一个命名空间。
声明名称空间后,我们需要使用创建的名称空间来引用XPath。
单击“声明”按钮后,将弹出两个命名空间,因为我们有两个URI。其中一个是架构URL,另一个是实际的Web服务URL。在引用XPath时,我们需要使用Web服务所在的实际名称空间,而不是架构名称空间。
声明名称空间soap ='http://schemas.xmlsoap.org/soap/envelope/';
声明名称空间ns1 ='http://tempuri.org/';
步骤3:现在,我们需要输入需要验证的XML节点的XPath。
// ns1:AddResult为我们提供<AddResult>&</ AddResult>和ns1之间封闭的节点的值,该节点对应于指向'http://tempuri.org/'的声明名称空间。
输入XML后,我们需要单击“从当前选择”,以便从当前响应中获取值以进行比较。
步骤4:到目前为止,
- 声明名称空间后,我们进入了需要验证的XML节点的XPath。
- 我们需要单击“从当前选择”以将当前值作为期望值。
- 当前值显示给用户,我们可以根据需要进行修改。
- 点击“保存”。
步骤5:添加的断言将显示如下。
脚本断言
这种断言技术是使用最广泛的一种技术,因为它很难管理和维护数百个断言。
SOAP UI使用Groovy脚本或JavaScript来对断言进行脚本化。采用脚本技术来开发用于测试SOAP的框架。脚本断言在以下情况下使用。
脚本允许用户分别使用设置和拆卸方法在执行TestCase之前和之后执行一些操作。建立是在执行特定方法之前执行的过程(例如,对象创建和初始化),而拆卸是在执行特定方法之后执行的过程(例如:销毁对象并清理)。此功能在其他断言类型中不可用,只能通过编码来完成。
它允许用户执行打开/关闭项目,初始化或清理与项目相关的设置以及使用环境变量的工作,这在脚本编写过程中非常有用。
它有助于我们断言动态响应内容。
脚本断言用于创建SOAP UI未预定义的用户定义的断言。
对于演示脚本断言,我们将使用计算器WSDL,即我们先前创建的测试用例“添加”。
步骤1:添加groovy脚本的步骤与其他断言的步骤相同,除了断言不是预定义的断言。而是由用户定义的断言提供了比内置的更大的灵活性。
选择必须对其添加断言的“测试”步骤。
单击“添加声明”按钮,如下所示。
步骤2:现在选择Assertion类别。
- 在这种情况下,它是脚本。
- 选择“脚本声明”,并且没有与之关联的子类型。
- 点击“添加”。
步骤2:将打开“脚本对话框”,用户可以在其中编写用户定义的脚本来验证响应XML。
步骤3:现在让我们编写一个Groovy脚本来验证转换率。脚本附在下面,并带有注释。建议您在尝试编写自己的脚本之前先了解Java脚本或Groovy脚本。
代码语言:javascript复制//Define Groovy Utils and holder for validating the XML reponse content
def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
def holder = groovyUtils.getXmlHolder(messageExchange.responseContent)
//Define the NameSpace
holder.namespaces["ns1"] = "http://tempuri.org/"
//Get the Value of the Node 'AddResult' and assign to a variable
def addResult = holder.getNodeValue("//ns1:AddResult")
//print the value of the result in the Output panel
log.info "The result value for integers is " addResult
//Comparing the value to print 'Pass' or 'Fail'
if(addResult=="46")
{ log.info "Pass" }
else
{ log.info "fail"}
- 单击“执行”按钮触发执行。
- 脚本的输出显示在“输出”窗格中。它同时打印了转换值和最终结果(通过或失败)
- 显示“脚本声明已通过”的信息。单击确定。
注意:只要脚本在语法上是正确的,最终的“信息”弹出窗口将始终显示消息“脚本声明已通过”。它与脚本中的断言无关。
点击确定
步骤4:现在,“断言”选项卡显示了我们为此测试套件添加的所有断言以及“状态”和每一个断言。
步骤5:现在
- 从导航器树中选择测试套件
- 点击“运行”按钮
- 结果将显示整个测试套件。