空手道:使用数据驱动的嵌入式模板方法进行 API 测试
Karate: Using data-driven embedded template approach for API testing
我想编写数据驱动的测试,传递从外部文件 (csv) 读取的动态值。
能够从 csv 为简单字符串传递动态值(下面的帐号和附属 ID)。但是,使用嵌入式表达式,如何为下面的 "DealerReportFormats" json 数组传递来自 csv 文件的动态值?
非常感谢任何帮助!!
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
CSV 仅适用于 "flat" 结构,因此在我看来,尝试将其与 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)
。
我想编写数据驱动的测试,传递从外部文件 (csv) 读取的动态值。 能够从 csv 为简单字符串传递动态值(下面的帐号和附属 ID)。但是,使用嵌入式表达式,如何为下面的 "DealerReportFormats" json 数组传递来自 csv 文件的动态值?
非常感谢任何帮助!!
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
CSV 仅适用于 "flat" 结构,因此在我看来,尝试将其与 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)
。