添加包含验证点

使用包含验证点,您可以检查服务所返回的 XML 内容的一个或几个元素是否与验证点中指定的 XML 片段匹配。

关于此任务

添加验证点时,会将服务响应中的结果与验证点测试元素中指定的预期内容相比较。等于包含验证点使您能够直接比较服务所返回的 XML 内容。

复杂服务请求或验证点可能具有在测试脚本中不需要的空 XML 元素。回放测试时,可跳过此类空 XML 元素。 在窗口 > 首选项 > 测试 > 测试编辑器 > 服务测试中,确保选择了在 XML 树查看器显示“如果空则跳过”列复选框。该选项在请求的树视图中显示如果空则跳过列。然后可以选择要跳过的 XML 元素。

过程

  1. 打开测试编辑器,并选择服务响应元素。
  2. 在“测试元素详细信息”区域内,单击消息选项卡并选择表单视图。
  3. 展开包络线,右键单击要检查的元素,然后单击创建包含验证点。此操作将创建含有所记录响应中 XML 元素的包含验证点。
    注: 您还可以使用消息响应来创建包含验证点,方法是选择“测试内容”窗格中的消息响应,并单击添加 > 包含验证点。但是,结果实际上与等于验证点相同,因为验证点包含消息响应的整个 XML 内容。
  4. 选择验证点,并在“测试元素详细信息”窗格中输入验证点的名称。
  5. 选择验证选项:
    • 选中使用 XML 名称空间进行测试复选框以对 XML 文档的限定结构(包括名称空间标记)而不是简单名称执行验证。禁用此选项以仅检查此元素的简单名称以及最终返回值。
    • 选中测试 XML 文本节点复选框以在验证中包括文本元素的内容。
    • 选中测试 XML 属性复选框以在验证中包括属性的内容。
  6. 如有必要,请选择表单视图来编辑预期的 XML 片段。

    对于等于验证点,预期的 XML 数据包含响应测试元素中的 XML 文档。如有必要,可以编辑预期的 XML 数据。

    可以在视图中指定标准 Java™ 正则表达式。在属性或文本值所在的行上选择正则表达式列,并在列中输入正则表达式。例如,以下正则表达式将检查格式正确的电子邮件地址:/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/

    使用正则表达式时,验证点中 XML 节点或 XML 片段的数量必须与预期节点的数量匹配。当 XML 片段中的所有正则表达式均已匹配时,验证点将返回“通过”状态。

示例

您可以使用包含验证点来检查消息响应是否仅包含具有特定值的特定元素。例如,考虑以下消息响应:
<s:Envelope
 xmlns:a="http://www.w3.org/2005/08/addressing"
 xmlns:s="http://www.w3.org/2003/05/soap-envelope">
  <s:Header>
    <a:Action
     s:mustUnderstand="1">http://www.w3.org/2005/08/addressing/soap/fault</a:Action>
    <a:RelatesTo>uuid:ed9bc447-d739-452f-989d-cd48344d494a</a:RelatesTo>
  </s:Header>
  <s:Body>
    <s:Fault>
      <s:Code>
        <s:Value>s:Sender</s:Value>
        <s:Subcode>
          <s:Value
           xmlns:a="http://schemas.xmlsoap.org/ws/2005/02/sc">a:BadContextToken</s:Value>
        </s:Subcode>
      </s:Code>
      <s:Reason>
        <s:Text
         xml:lang="en-US">The message could not be processed. This is most likely because the action &apos;http://Samples.ICalculator/Add&apos; is incorrect or because the message contains an invalid or expired security context token or because there is a mismatch between bindings. The security context token would be invalid if the service aborted the channel due to inactivity. To prevent the service from aborting idle sessions prematurely increase the Receive timeout on the service endpoint&apos;s binding.</s:Text>
      </s:Reason>
      <s:Node>http://www.w3.org/1999/xlink</s:Node>
      <s:Role>http://www.w3.org/1999/xlink</s:Role>
      <s:Detail
       xmlns:tns0="http://schemas.com/2003/10/Serialization/"
       xmlns:tns15="http://Samples.Windows"
       tns0:Id="id"
       tns0:Ref="idref">
        <tns15:GetCallerIdentityResponse>
          <tns15:GetCallerIdentityResult>str</tns15:GetCallerIdentityResult>
        </tns15:GetCallerIdentityResponse>
      </s:Detail>
    </s:Fault>
  </s:Body>
</s:Envelope>
为了检查 Subcode 元素,包含验证点的预期内容是以下 XML 片段:
<s:Subcode
  xmlns:a="http://www.w3.org/2005/08/addressing"
  xmlns:s="http://www.w3.org/2003/05/soap-envelope">
   <s:Value
   xmlns:a="http://schemas.xmlsoap.org/ws/2005/02/sc">a:BadContextToken</s:Value>
</s:Subcode>
缺省情况下,包含验证点会检查名为 Subcode 的元素是否包含一个名为 Value 的元素。您可以使用以下选项:
  • 使用 XML 名称空间进行测试:使用此选项,验证点将检查名为 "http://www.w3.org/2003/05/soap-envelope":SubCode 的元素是否包含一个名为 "http://www.w3.org/2003/05/soap-envelope":Value 的元素。
  • 测试 XML 文本节点:使用此选项,验证点还将检查名为 Value 的元素是否包含文本 a:BadContextToken
  • 测试 XML 属性:使用此选型,验证点还将检查属性是否与预期的 XML 片段匹配。在本示例中,测试 XML 属性选项不必要,因为 Subcode 元素没有任何属性。
为了检查 Detail 元素是否正确返回 GetCallerIdentityResult 的特定值,包含验证点的预期内容是以下 XML 片段:
<s:Detail
 xmlns:a="http://www.w3.org/2005/08/addressing"
 xmlns:s="http://www.w3.org/2003/05/soap-envelope"
 xmlns:tns0="http://schemas.com/2003/10/Serialization/"
 xmlns:tns15="http://Samples.Windows"
 tns0:Id="regular_expression"
 tns0:Ref="idref">
  <tns15:GetCallerIdentityResponse>
    <tns15:GetCallerIdentityResult>IdentityValue</tns15:GetCallerIdentityResult>
  </tns15:GetCallerIdentityResponse>
</s:Detail>
您可以使用以下选项:
  • 测试 XML 文本节点:使用此选项,验证点还将检查名为 GetCallerIdentityResult 的元素是否包含文本 IdentityValue
  • 测试 XML 属性:使用此选项,验证点还将检查 tns0:Id 所引用的属性 Id 是否具有预期的值。 您可以通过使用验证点的“”视图中的正则表达式列来为该值指定正则表达式。例如,tns0:Id="[a-zA-Z]" 将检查该值是否不包含数字。

下一步做什么

您可以通过右键单击测试编辑器中的验证点并单击启用禁用来启用或禁用各验证点。

反馈