【问题标题】:Karate: Using data-driven embedded template approach for API testing空手道:使用数据驱动的嵌入式模板方法进行 API 测试
【发布时间】:2020-10-08 03:11:36
【问题描述】:

我想编写数据驱动的测试,传递从外部文件 (csv) 读取的动态值。 能够从 csv 传递简单字符串的动态值(下面的帐号和附属 ID)。但是,使用嵌入式表达式,如何从 csv 文件中为下面的“DealerReportFormats”json 数组传递动态值?

非常感谢任何帮助!

Scenario Outline: Dealer dynamic requests
    Given path '/dealer-reports/retrieval'
    And request read('../DealerTemplate.json')   
  When method POST
    Then status 200
    Examples: 
      | read('../DealerData.csv') | 


DealerTemplate.json is below
{    
  "DealerId": "FIXED",
  "DealerName": "FIXED",
  "DealerType": "FIXED",

  "DealerCredentials": {
    "accountNumber": "#(DealerCredentials_AccountNumber)",
    "affiliateId": "#(DealerCredentials_AffiliateId)"
  },
"DealerReportFormats": [
    {
      "name": "SalesReport",
      "format": "xml"
    },
    {
      "name": "CustomerReport",
      "format": "txt"
    }
  ]
}

DealerData.csv: 

DealerCredentials_AccountNumber,DealerCredentials_AffiliateId
testaccount1,123
testaccount2,12345
testaccount3,123456

【问题讨论】:

  • 我试着理解这个问题并放弃了。这里的任何人都可以拍摄。或者你可以按照这个过程:github.com/intuit/karate/wiki/How-to-Submit-an-Issue
  • @PeterThomas 我尽力简化问题。你能建议吗
  • @jyohas 不要使用 csv 作为输入。相反,使用 json 作为输入。这样你就可以在输入 json 中拥有 json 数组。
  • @Neodawn csv 用于将动态值输入到 json 模板中。想要在 DealerReportFormats 下传递“名称”和“格式”字段的动态值(类似于我为 #(DealerCredentials_AccountNumber) 所做的那样)
  • @jyohas 看到我的回答。老实说,你试图做的太多了。有时,多写几个Scenario-s 就可以了:stackoverflow.com/a/54126724/143475

标签: automated-tests expression karate data-driven-tests


【解决方案1】:

CSV 仅适用于“平面”结构,因此在我看来,尝试将其与 JSON 混合起来过于雄心勃勃。如果需要,请寻找另一个框架:)

也就是说我看到了 2 个选项:

a) 在 CSV 中使用正确的引用和转义

b) 引用 JSON 文件

这是一个例子:

Scenario Outline:
* json foo = foo
* print foo

Examples:
| read('test.csv') |

test.csv 是:

foo,bar
"{ a: 'a1', b: 'b1' }",test1
"{ a: 'a2', b: 'b2' }",test2

如果你想避开双引号,我把它作为练习留给你。这是可能的。

选项 (b) 是您可以参考独立的 JSON 文件并阅读它们:

foo,bar
j1.json,test1
j2.json,test2

你可以在你的功能中使用* def foo = read(foo)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多