You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于Xspec语法的求助:用<x:expect test=""/>对比测试文件值与常量

没问题,我来帮你搞定这个Xspec的常量对比测试!针对你给出的XML结构,我整理了对应的Xspec测试用例,直接就能用来验证节点值和预设常量是否匹配:

Xspec常量对比测试示例

首先是你要测试的XML内容:

<?xml version='1.0' encoding='ISO-8859-5'?>
<List>
  <M_INSDES>
    <S_UNH>
      <D_0062>3600</D_0062>
      <C_S009>
        <D_0065>INSDES</D_0065>
        <D_0052>D</D_0052>
        <D_0054>96A</D_0054>
        <D_0051>UN</D_0051>
        <D_0057>EAN001</D_0057>
      </C_S009>
    </S_UNH>
  </M_INSDES>
</List>

接下来是对应的Xspec测试用例,我把每个节点和常量的对比都写得明明白白:

<?xml version="1.0" encoding="UTF-8"?>
<x:description xmlns:x="http://www.jenitennison.com/xslt/xspec">
  <x:title>测试XML节点值与常量的匹配</x:title>
  
  <x:scenario label="验证S_UNH下的D_0062节点值">
    <x:context select="/List/M_INSDES/S_UNH/D_0062"/>
    <x:expect label="值应为常量3600">3600</x:expect>
  </x:scenario>

  <x:scenario label="验证C_S009下的各个子节点值">
    <x:context select="/List/M_INSDES/S_UNH/C_S009"/>
    
    <x:expect label="D_0065值应为INSDES" select="D_0065">INSDES</x:expect>
    <x:expect label="D_0052值应为D" select="D_0052">D</x:expect>
    <x:expect label="D_0054值应为96A" select="D_0054">96A</x:expect>
    <x:expect label="D_0051值应为UN" select="D_0051">UN</x:expect>
    <x:expect label="D_0057值应为EAN001" select="D_0057">EAN001</x:expect>
  </x:scenario>
</x:description>

关键细节说明:

  • 用x:context指定测试的根节点路径,后续的x:expect可以基于这个上下文快速定位子节点,也可以直接在x:expect的select属性里写完整路径,灵活度很高。
  • x:expect标签里的文本就是你要对比的常量值,只要目标节点的文本内容和这个常量完全一致,测试就会通过。
  • 如果需要更复杂的断言(比如数值大小对比、忽略大小写匹配等),还可以在x:expect里用XPath表达式,比如<x:expect select=". = number('3600')"/>来做数值相等判断。

要是你还有特定场景需要调整(比如处理命名空间、批量测试同类型节点等),随时说就行!

内容的提问来源于stack exchange,提问作者Andrey Davydenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:16:06