参数化json请求的最佳方法

时间:2018-04-06 11:33:39

标签: karate

String json = "{  \n" + 
        "   \"id\":\"\",\n" + 
        "   \"type\":\"ENTERPRISE_ORG\",\n" + 
        "   \"owner\":{  \n" + 
        "      \"type\":\"ORGANIZATION\",\n" + 
        "      \"identity_reference\":"+identityReference+"\n" + 
        "   },\n" + 
        "   \"license_type\":\"CONTRACTED\",\n" + 
        "   \"contract_start_date\":\"2018-03-22T00:00:01\",\n" + 
        "   \"contract_end_date\":\"2020-03-22T07:00:01\",\n" + 
        "   \"effective_date\":\"2018-03-22T00:00:01\",\n" + 
        "   \"originating_entity_id\":"+orginatingReference+",\n" + 
        "   \"external_contract_id\":\"0047813102Gs2LOCCZ\",\n" + 
        "   \"sold_to_id\":\"1041292\",\n" + 
        "   \"sold_to_name\":\"BLOOMSOFT ARGENTINA SA\",\n" + 
        "   \"sold_to_type\":\"RESELLER\",\n" + 
        "   \"market_segment\":\"CR\",\n" + 
        "   \"iso_3166_alpha2_code\":\"US\",\n" + 
        "   \"eu_id\":\"22547302\",\n" + 
        "   \"parent_org_id\":\"\",\n" + 
        "   \"acm_id\":null,\n" + 
        "   \"abn\":null,\n" + 
        "}";

我已经为上面的请求json发布了api,并且需要为各种场景提供不同数据集的相同json,并且需要在运行时捕获值并传递给下一个post api

问题:

我很困惑并担心如何调用json请求以便于维护和标准流程。

选项

  1. 创建Java String方法并调用特征文件和参数化

  2. 创建json并从特征文件中读取并参数化

  3. 在具有各种数据的每个场景的特征文件中直接拥有json内容。不确定json中的任何更改都需要大量的更新/维护

  4. 任何建议都会很棒

2 个答案:

答案 0 :(得分:0)

如果我理解你的问题,我认为选项2是你最好的选择

我的建议是制作多个“可重复使用”的功能文件。其中有json操作

请阅读getexamplesScenario Outlinesettables

答案 1 :(得分:-1)

Vinod - 您需要做一些研究并阅读文档。请阅读有关数据驱动测试的此部分,然后按照示例/演示文件的链接进行操作。感谢。

https://github.com/intuit/karate#data-driven-tests

除非绝对必要,否则我强烈建议您使用Java。

编辑:是的,您可以使用JSON进行数据驱动测试:https://github.com/intuit/karate/blob/master/karate-demo/src/test/java/demo/callarray/call-json-array.feature#L8

是的,即使您从文件中读取的JSON也可以动态替换值:https://github.com/intuit/karate/blob/master/karate-demo/src/test/java/demo/cats/kittens.feature#L28