关于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
相关产品推荐
相关产品推荐

