karate - 使用场景大纲中的示例匹配每个
问题描述
我发现使用* match each response.xyz
超级强大的合并对象结构测试和内容测试。有没有办法将它与Examples
表格一起使用<placeholder>
?
我有类似的东西,我想在上面使用示例表:
* match each response.Services ==
"""
{
"ServiceId" : #present,
"Name" : <Name>,
"Description" : #present,
"InActive" : <Inactive>,
}
"""
Examples:
| ClientId | Name | Status | ErrorCode | Inactive |
| 400152 | "Foxtrot" | 200 | 0 | false |
| 400152 | "Waltz" | 200 | 0 | false |
我明白了
"Services": [
{
"ServiceId": 3,
"Name": "Waltz",
"Description": "Waltzing like Matilda",
"InActive": false,
},
{
"ServiceId": 4,
"Name": "Foxtrot",
"Description": "",
"InActive": false,
},
回来作为回应。显然,当我在 中使用多行时Examples:
,会导致多次测试。
我正在寻找的是根据预定义的值测试数组中的每个对象,但不知道它们会以什么顺序显示。并使用表格生成的有序方法。
解决方案
而不是each
,试试这个:
* match response.Services contains
"""
{
"ServiceId" : #present,
"Name" : <Name>,
"Description" : #present,
"InActive" : <Inactive>,
}
"""
编辑:好的,另一种选择。顺便说一句,我至少可以想到 5 种不同的方法:P
Scenario:
* table data
| ClientId | Name | Status | ErrorCode | Inactive |
| 400152 | "Foxtrot" | 200 | 0 | false |
| 400152 | "Waltz" | 200 | 0 | false |
* def expected = karate.map(data, function(x){ return { ServiceId: '#present', Name: x.Name, Description: '#present', InActive: x.Inactive} })
* match response.Services contains expected
EDIT2:如果你可以控制整个table
:
Scenario:
* table expected
| Name | InActive | ServiceId | Description |
| "Foxtrot" | false | '#present' | '#present' |
| "Waltz" | false | '#present' | '#present' |
* match response.Services contains expected
推荐阅读
- list - Android/Java:是否有快速过滤列表中保存的大数据的方法?以及如何在服务器中以较小的存储空间获得高质量的图片?
- docker - 警告:检查作业...在 gitlab-runner 中的 docker 执行器中失败
- java - 可运行的 JAR 未检测到 logback.xml 配置
- pdf - iText 的 SameLine 函数背后的逻辑是什么?
- python - 在反向关系列表中过滤 Django 模型
- javascript - 希望在按下提交输入时显示文本,并在 3 秒后重定向到 Index.html
- entity-framework - 无法“预热”实体框架
- react-native - 在 react-native-gifted-chat 中编辑头像位置
- javascript - 如何检查表的值是否串联?
- javascript - 全屏html5中的关闭按钮