SoapUI中是如何断言的呢(二)

2020-06-17 10:32:25 浏览数 (1)

什么是断言?

断言是指肯定或陈述某事的行为。也可以将其解释为检查点或验证点。

将请求发送到Web服务器后,就会收到响应。我们需要验证响应是否包含我们期望的数据。为了验证响应,我们需要使用断言。

XPATH匹配声明

使用XPath表达式选择目标节点及其值。XPath是一种XML查询语言,用于从XML文档中选择节点。

步骤1:现在,点击“添加新断言”按钮后,

  1. 选择断言类别。
  2. 选择断言类型–在这种情况下为“ XPath Match”
  3. 点击“添加”

步骤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:到目前为止,

  1. 声明名称空间后,我们进入了需要验证的XML节点的XPath。
  2. 我们需要单击“从当前选择”以将当前值作为期望值。
  3. 当前值显示给用户,我们可以根据需要进行修改。
  4. 点击“保存”。

步骤5:添加的断言将显示如下。

脚本断言

这种断言技术是使用最广泛的一种技术,因为它很难管理和维护数百个断言。

SOAP UI使用Groovy脚本或JavaScript来对断言进行脚本化。采用脚本技术来开发用于测试SOAP的框架。脚本断言在以下情况下使用。

脚本允许用户分别使用设置和拆卸方法在执行TestCase之前和之后执行一些操作。建立是在执行特定方法之前执行的过程(例如,对象创建和初始化),而拆卸是在执行特定方法之后执行的过程(例如:销毁对象并清理)。此功能在其他断言类型中不可用,只能通过编码来完成。

它允许用户执行打开/关闭项目,初始化或清理与项目相关的设置以及使用环境变量的工作,这在脚本编写过程中非常有用。

它有助于我们断言动态响应内容。

脚本断言用于创建SOAP UI未预定义的用户定义的断言。

对于演示脚本断言,我们将使用计算器WSDL,即我们先前创建的测试用例“添加”。

步骤1:添加groovy脚本的步骤与其他断言的步骤相同,除了断言不是预定义的断言。而是由用户定义的断言提供了比内置的更大的灵活性。

选择必须对其添加断言的“测试”步骤。

单击“添加声明”按钮,如下所示。

步骤2:现在选择Assertion类别。

  1. 在这种情况下,它是脚本。
  2. 选择“脚本声明”,并且没有与之关联的子类型。
  3. 点击“添加”。

步骤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"}
  1. 单击“执行”按钮触发执行。
  2. 脚本的输出显示在“输出”窗格中。它同时打印了转换值和最终结果(通过或失败)
  3. 显示“脚本声明已通过”的信息。单击确定。

注意:只要脚本在语法上是正确的,最终的“信息”弹出窗口将始终显示消息“脚本声明已通过”。它与脚本中的断言无关。

点击确定

步骤4:现在,“断言”选项卡显示了我们为此测试套件添加的所有断言以及“状态”和每一个断言。

步骤5:现在

  1. 从导航器树中选择测试套件
  2. 点击“运行”按钮
  3. 结果将显示整个测试套件。

0 人点赞