karate - 空手道 API 函数/关键字用传递的参数替换 JSON 占位符键
问题描述
在使用空手道 API 的 Web 服务测试中,如何用我在后台定义的值替换 JSON 键?
背景:我正在通过空手道 API 访问 REST API 端点。这给我返回了一个深层嵌套的 JSON。一旦我得到响应,我需要评估响应是否包含我的参数作为键以及键的值是否不为空。下面是我的代码
Background:
* def execParam = 'ArgumentProvided'
@MyTestCase
Given url myUrl + '/' + execParam
When method get
Then status 200
And match response.subElement contains {execParam : '#notnull'}
使用上面的代码,断言失败并出现错误
expected: {execParam:'#notnull'}, reason: actual value does not contain expected
我的期望是代码断言{'ArgumentProvided':'#notnull'}
。代码当前断言{execParam:'#notnull'}
我尝试用 替换execParam
,#execParam
并且$.execParam
这些#[$.execParam]
都没有替换该值。所以需要帮助替换 JSON 密钥
解决方案
对于这个有趣的用例,您可以像这样动态构建预期的 JSON:
* def execParam = 'ArgumentProvided'
* def response = { subElement: { ArgumentProvided: 'foo' } }
* def expected = {}
* eval expected[execParam] = '#notnull'
* match expected == { ArgumentProvided: '#notnull' }
* match response.subElement contains expected
推荐阅读
- c# - 在 C# 8 中,如何检测不可能的空值检查?
- angular - Firebase 托管和路由 Angular 项目不起作用
- java - 使用 Java 8 Lambas 通过键或值在 JsonArray (javax.json.JsonArray) 中查找 JsonObject
- regex - 用于从 Instagram 标题中解析提到的用户名的正则表达式
- python - seaborn中的多个计数图
- python - 反向 pip 安装“-e”选项
- r - R中的慢dplyr查询
- python - 带有输入python的unittest while循环
- c# - 使用文件 txt 将数据插入 SQL Server
- javascript - css幻灯片背景加载缓慢