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

时间:2019-03-16 00:37:57

标签: karate

 * 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文件应该是什么?

1 个答案:

答案 0 :(得分:1)

在JSON中使用embedded expressions,例如

break

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

entity: '#(entity)'

但是在* def mpRequestJson = read('my.json') 之前,您应该初始化必须替换的变量。因此,您将有一些额外的行。

read

减少多余行数的一种方法是创建临时JSON:

* def entity = '<entity>'

然后您可以在JSON中执行此操作:

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

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