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

空手道场景大纲-基于JSON数组索引大小创建动态示例表

吕翰飞
2023-03-14

在这里,我想澄清一下如何为动态JSON索引大小创建动态示例表

我的JSON看起来像

Env-Dev-2服务器

"response": {
    "abc": [{
            "status": "pass"
                .
                .
        },
        {
            "status": "pass"
                .
                .
        }
    ]
}

Env-Uat-3服务器

{
    "response": {
        "abc": [{
                "status": "pass"
            },
            {
                "status": "pass"
            },
            {
                "status": "pass"
            }
        ]
    }
}

我的场景大纲看起来像

Scenario Outline: validating .....

When def result = callonce read('featurefilename@tagname')

Then print result

And print <status>

And print ...

And match ....

Examples:

|result.response.abc|

上述错误:

1) *动态表达式计算失败:result.response.abc

2)com.intuit.karate.karateExpresion: ---- javascript评估失败result.response.abc,RequiceError:结果未在第1行中定义

注意-如果我在def result=callonce read('featurefilename@tagname“)到后台它按预期工作,但由于其他因素,我无法在功能文件中使用后台。

提前谢谢

共有1个答案

单修德
2023-03-14

您可以利用空手道中的动态场景大纲功能,而不是在表中提供索引。

在这种情况下,您可以将变量作为输入传递给示例。如果上面提供的JSON来自变量result,那么,

Examples:
 | result.response.abc |

有关更多细节,请参阅文档。

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

  • 下面是我的示例功能文件: 我将期待失败的这个功能,并转移到下一个。

  • 我有一个情况,我需要在空手道中传递不同种类的日期类型变量。为此,我创建了一个JAVA方法,并在一个特性文件中调用它,如下所示。 我读到它的cucumber限制,不能支持动态变量在场景大纲。我也读过https://github.com/intuit/karate#the-karate-way,但不知何故,我不知道如何解决下面的情况。

  • 有没有可能用gherkin写一个场景大纲,其中有一个断言步骤,而不是在所有的例子中都需要? null 有没有更好的写法?