当前位置: 首页 > 知识库问答 >
问题:

空手道场景中使用JSON.stringify()的JSON转义字符

慕嘉运
2023-03-14

我想在发送请求之前将每个请求转换为以下格式。

"Store": {
"Tesco": "1284756",
    "Sainsburys": "37384657",
    "Asda": "1234567"
}

我相信我们可以使用类似json.stringify({“store”:{“tesco”:“1284756”,“sainsburys”:“37384657”,“asda”:“1234567”}})。替换(/[\“]/g,'\\\”');来转换字符串。

我们如何在空手道中使用这一点,将每个请求转换成以下格式:

\"Store\": {\n\"Tesco\": \"1284756\",\n    \"Sainsburys\": \"37384657\",\n    \"Asda\": \"1234567\"\n}\n

我还想处理响应,并将其还原为以下格式?

"Store": {
"Tesco": "1284756",
    "Sainsburys": "37384657",
    "Asda": "1234567"
}

共有1个答案

淳于哲
2023-03-14

请避免json.stringify(),使用空手道中专门为此设计的“类型转换”特性。并阅读文档:

https://github.com/intuit/karate#类型-转换

* json temp = someString
 类似资料:
  • 我想使用资源文件夹中的所有图像运行我的场景。这意味着每次使用不同的图像访问相同的api(首先将它们转换为Base64编码)。但是,由于这些图像已经在资源文件夹中,因此在csv中保存一些名称或记录以供场景大纲使用是没有意义的。我可以在示例部分调用我自己的函数(有代码从资源文件夹中获取图像并将其转换为base64),这样对于每个图像,它都会再次命中相同的api。

  • 是否可以以一种优雅的方式忽略某些取决于环境的场景?我有很多不同的场景(数十个),并检查了几乎所有的场景,但有些环境必须跳过一些具体的场景。 谢谢你。

  • 这是这里提到的一个问题的后续 假设我们实现的服务器v1和v2响应如下 类似地,我们定义v1和v2的客户机模式如下 我们在通用场景中实现模式验证,如下所示。我们可以很容易地使用v1Response/v2Response设置“response”,使用v1Schema/v2Schema设置“schema”,具体取决于我们的环境。 只要我们针对v1客户机测试v1服务器,或者针对v2客户机测试v2服务器,上

  • 我发现非常有用的一种模式是在功能文件中保留特定于业务/相关的场景。然后,在步骤定义中执行所有技术操作,如特定的REST调用和断言。 下面是我想要达到的大致目标的一个例子。这可能不是一个特别好的例子,但我需要一些东西来描绘一幅图画,让人们以类似的方式思考。 然后我想要从BDD场景中获得步骤定义。 ^给定(.)has(.)作为给定url“http://myhost.com/packetists”和请求

  • 任何帮助都将非常感谢! 谢里奥

  • 如果我想做以下事情: 它将在两种情况下评估变量,因此在其中一种情况下,我得到类似第1个场景和在第二个场景中。 如果可能的话,我会避免硬编码这个值,我读过关于的文章,但没有使用它,有一个独立的文件来生成时间戳听起来很有趣。 我正在使用空手道网络,你对如何实现这一点有建议吗?:) 谢谢