空手道:从 JSON 文件中的嵌入表达式动态输入值

Karate : Dynamically input values from embedded expressions in a JSON file

 * def mpRequestJson =
        """
        {
            "entity": '<entity>',
            "consent": {
                "PHONE": <updategetPhonePref>,
                "EMAIL": true,
                "POST": false,
                "SMS": <updategetSMSPref>
            },
            "notices": [{
                "title": "Privacy policy",
                "version": "NA"
            }],
            "source": "web"
        }
        """
        Given path '<entity>'
        And request mpRequestJson
        When method PUT
        Then status 200
        And match $.consent.PHONE == '<updategetPhonePref>'
        And match $.consent.SMS == '<updategetSMSPref>'

        Examples:
            |entity  | updategetPhonePref|updategetSMSPref|
            |xyz| #(updategetPhonePref)|#(updategetSMSPref)|

如果我想将 JSON 请求存储在 JSON 文件而不是功能文件中,我的 JSON 文件应该是什么?

在 JSON 中使用 embedded expressions,例如

entity: '#(entity)'

然后你可以从文件中读取它:

* def mpRequestJson = read('my.json')

但在 read 之前,您应该初始化必须替换的变量。所以你会有一些额外的行。

* def entity = '<entity>'

减少额外行的一种方法是创建临时文件 JSON:

* def data = { entity: '<entity'>, phone: '<updategetPhonePref>' }

然后你可以在 JSON:

entity: '#(data.entity)'

也请阅读 data driven tests 上的文档。