如何在空手道中比较 XML 响应与 Json

2023-12-19

我需要将 JSON 响应与下游 XML 响应进行匹配并验证。以下是两者的响应示例。

请注意,Json 响应参数与 XML 响应不按顺序排列。

JSON响应

"Main": {
    "Cd": "ABC",
    "descriptionTxt": "Sample Main",
    "type": "A",
    "codeType": "P",
    "dt": "2018-10-15T00:00:00-05:00",
    "validity": "3",
    "segment": "Personal"
    },
  "testList": [
    {
      "code": "123",
      "descriptionTxt": "My Description",
      "categoryCd": "DUDU"
    },
    {
      "code": "675",
      "descriptionTxt": "His Description"
    },
    {
      "code": "345",
      "descriptionTxt": "Your Description",
      "categoryCd": "BH"
    }
]

XML响应

<S:Body>
<ns4:code>ABC </ns4:code>
    <ns5:description>Sample Main</ns5:description>
    <ns5:Date>2018-10-15</ns5:Date>
    <ns5:Type>A</ns5:Type>
    <ns5:codeType>P</ns5:codeType>
    <ns5:validity>3</ns5:validity >
    <ns5:Segment>PERSONAL  </ns5:Segment>
    <ns5:unwanted>Unwanted XML Parameter</ns5:unwanted>

    <ns4:Test>
      <ns5:code>123   </ns5:code>
      <ns5:description>My Description</ns5:description>
      <ns5:categoryCode>DUDU</ns5:categoryCode>
      <ns5:unwanted>Unwanted XML Parameter</ns5:unwanted>
    </ns4:Test>

    <ns4:Test>
      <ns5:code>345   </ns5:code>
      <ns5:description>Your Description</ns5:description>
      <ns5:categoryCode>BH</ns5:categoryCode>
    </ns4:Test>

    <ns4:Test>
      <ns5:code>675  </ns5:code>
      <ns5:description>His Description</ns5:description>
      <ns5:unwanted>Unwanted XML Parameter</ns5:unwanted>
    </ns4:Test>

如果您花时间发布格式正确的 JSON 和 XML,那就太好了,但无论如何。我关注的是这里的难题,即将重复的 XML 元素映射到 JSON,如果将以下内容粘贴到Scenario你可以看到它的工作原理:

* def json = 
"""
{
   "Main": {
      "Cd":"ABC",
      "descriptionTxt":"Sample Main",
      "type":"A",
      "codeType":"P",
      "dt":"2018-10-15T00:00:00-05:00",
      "validity":"3",
      "segment":"Personal"
   },
   "testList":[
      {
         "code":"123",
         "descriptionTxt":"My Description",
         "categoryCd":"DUDU"
      },
      {
         "code":"675",
         "descriptionTxt":"His Description"
      },
      {
         "code":"345",
         "descriptionTxt":"Your Description",
         "categoryCd":"BH"
      }
   ]
}
"""
* def xml = 
"""
<ns4:root xmlns:ns4="http://foo.com" xmlns:ns5="http://bar.com">
   <ns4:Test>
      <ns5:code>123</ns5:code>
      <ns5:description>My Description</ns5:description>
      <ns5:categoryCode>DUDU</ns5:categoryCode>
      <ns5:unwanted>Unwanted XML Parameter</ns5:unwanted>
   </ns4:Test>
   <ns4:Test>
      <ns5:code>345</ns5:code>
      <ns5:description>Your Description</ns5:description>
      <ns5:categoryCode>BH</ns5:categoryCode>
   </ns4:Test>
   <ns4:Test>
      <ns5:code>675</ns5:code>
      <ns5:description>His Description</ns5:description>
      <ns5:unwanted>Unwanted XML Parameter</ns5:unwanted>
   </ns4:Test>
</ns4:root>
"""
* def list = $xml/root/Test
* def xpath = function(x, p){ try { return karate.xmlPath(x, p) } catch (e) { return '#notpresent' } }
* def fun = function(x){ return { code: xpath(x, '/Test/code'), descriptionTxt: xpath(x, '/Test/description'), categoryCd: xpath(x, '/Test/categoryCode') } }
* def temp = karate.map(list, fun)
* print temp
* print json.testList
* match json.testList contains temp

映射 JSON 的其余部分对您来说是一项练习。请参阅文档。另请参阅此答案以获取更多想法:空手道 - 匹配两个动态响应 https://stackoverflow.com/q/53118601/143475

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在空手道中比较 XML 响应与 Json 的相关文章

随机推荐

  • 如何在点击WPF按钮时禁用它的边框?

    如何在单击 WPF 按钮时禁用其边框 我有如下创建按钮 除了单击该按钮外 一切正常
  • 将变量钳位在范围内

    给定两个值x and b 我想要一个函数来钳位x落入 b b 尤其 If x小于或等于 b 然后函数返回 b If x大于 b并且小于b 然后函数返回x If x大于或等于b 然后函数返回b 在 R 中我写了以下函数truncfn 此功能仅
  • 我可以将 unsigned char 转换为 char ,反之亦然吗?

    我想使用一个需要这样数据的函数 void process char data in int data len 所以它实际上只是处理一些字节 但当涉及到原始字节时 我更喜欢使用 unsigned char 不知何故 感觉 只处理正的 0 到
  • 获取元素的实际浮点宽度

    我正在使用 jQuery v1 7 1 并且需要获取元素的绝对浮点宽度 但 jQuery 的所有宽度方法似乎都会对宽度值进行四舍五入 例如 如果元素的实际宽度是20 333333px jQuery的width方法返回20 即忽略小数值 你可
  • Shared_ptr 自定义删除器

    我需要为shared ptr 做自定义删除器 我知道这可以通过类似的方式完成 std shared ptr
  • 如何让 python 打印 1 而不是 1.0

    我正在制作一个数学求解程序 它不断将整数打印为小数 就像1是1 0 5是5 0 我的代码是 print Type in the cooridinates of the two points print print print First p
  • C# 中构造函数的返回类型是什么?

    我在 Java 上问过这个问题this https stackoverflow com q 8868117 350601 link 我在 java 中得到了一些答案 现在我想在 C 中知道它 正如我们所知 我们不必向 C 构造函数添加任何返
  • 构建 cordova-wp8 进行调试时,MSBuild 无法创建 .xap

    我正在构建一个 cordova 应用程序并尝试在 cmd 提示符中运行 cordova build wp8 但这似乎出错了 Your environment has been set up for using Node js 0 10 25
  • 代码生成器或 T4 模板,它们真的很邪恶吗?

    我听人们说不应使用代码生成器和 T4 模板 其背后的逻辑是 如果您使用生成器生成代码 那么有一种更好更有效的方法通过泛型和模板来构建代码 虽然我稍微同意上面的这一说法 但我还没有真正找到有效的方法来构建可以实例化自身的模板 换句话说 我永远
  • 无法存储mysql中执行语句的返回值

    使用 MySQL 我尝试创建一个存储过程来检索任何给定表中 varchar 列的最大值 我想将该列的值增加 1 然后用它来存储其他字段 我不希望该列为 int 且自动递增 我现在拥有的存储过程是 分隔符 use gounicartdb DR
  • 在 ViewScript 中显示 Zend_Form 表单错误

    我正在尝试使用 ViewScript 在表单之前显示所有表单错误 这是我当前尝试在 ViewScript 中使用的代码 div class errors div 此调用给我一条错误消息 警告 htmlspecialchars 期望参数 1
  • 获取 Pandas DataFrame 中行匹配条件的第一列值

    假设我有一个 pandas 数据框 如下所示 color number 0 red 3 1 blue 4 2 green 2 3 blue 2 我想从颜色列具有值的数字列中获取第一个值 blue 在这种情况下会返回4 我知道这可以使用loc
  • Android中一些Paint常量的含义

    Android 中有一些 Paint 常量 我找不到太多信息 谁能帮我解释一下这些标志 LINEAR TEXT FLAG SUBPIXEL TEXT FLAG FILTER BITMAP FLAG 子像素 模式是否接近 ClearType
  • 如何在 PostgreSQL 中进行数据透视

    我是 PostgreSQL 新手 假设我有一个如下表 colorname Hexa rgb rgbvalue Violet 8B00FF r 139 Violet 8B00FF g 0 Violet 8B00FF b 255 Indigo
  • 将相同的值转发给两个或多个函数

    当使用转发引用时 转发引用是一个坏主意吗 多个函数具有相同的值 考虑下面的代码 template
  • 如何在golang中测试io.writer?

    最近希望为golang写一个单元测试 其功能如下 func s containerStats Display w io Writer error fmt Fprintf w s s n hello world return nil 那么如何
  • Bot框架获取内嵌聊天控制页面的ServiceUrl

    我想将聊天控件嵌入到许多网站 并且我想获取已嵌入网站的 Url 以便我的机器人可以获得与网站 URL 匹配的数据 但是 当我嵌入从 WebChat 生成的 iframe 时 我总是得到相同的 ServiceUrl 这就是https webc
  • 如何使用 class-dump 获取 IOHIDLib 的标头?

    它可以通过以下方式转储iOS私有框架的运行时标头class dump工具 但我正在寻找的标题IOHIDEvent在 iOS 6 之后它已经被移到了我找不到的任何地方 但是 在 iOS 6 SDK 中有一个 lib 看起来像这样 Applic
  • 集群共享缓存[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 java 框架 它允许我在多个 JVM 之间共享缓存 我需要的是类似的东西榛卡斯特 http www hazelcast
  • 如何在空手道中比较 XML 响应与 Json

    我需要将 JSON 响应与下游 XML 响应进行匹配并验证 以下是两者的响应示例 请注意 Json 响应参数与 XML 响应不按顺序排列 JSON响应 Main Cd ABC descriptionTxt Sample Main type