Xmlsample.feature
Feature: test A
Scenario: test apple
* table test_apple_one
| payload_file |
| 'sample/ball.xml' |
* def result = call read('classpath:........./samplereq.feature') test_apple_one
Jsonsample.feature
Feature: test B
Scenario: test Mango
* table test_Mango_one
| payload_file |
| 'sample/cat.`enter code here`json' |
samplereq.feature
Feature: sample
Background:
#Common Config load
* def sampleURL = baseURL+'/sample/test'
* xml payload = read('classpath:.....'+payload_file)
#OAuth Signature generator
* def authorization = "oauth string"
Scenario: Make the sample API call
Given url sampleURL`enter code here`
Given header Authorization = authorization
Given request payload
And header Content-Type = 'application/xml;charset=UTF-8'
And header Host = host
And header Accept = content_type
When method post
Then match header Content-Type contains 'application/xml'
我正在将上述功能samplereq.feature用于XML API请求,并且 我想将此功能samplereq.feature保持为通用,并在Json Api请求中使用相同功能。我可以对JSON(Jsonsample.feature)API请求进行相同操作,请提出建议
答案 0 :(得分:0)
我多次阅读了您的问题,很抱歉,我根本无法理解您要做什么。另外我认为您对空手道的理解不正确。因此,请听取我的建议,并秉持正确的精神。
我认为您正在尝试不必要地使测试复杂化。我的真诚建议是-请不要尝试这种极端的重复使用。我观察到,当团队尝试创建超通用的可重用测试脚本时,它只会使事情变得复杂并且难以维护。
因此,请对JSON和XML使用不同的功能文件。对于每个测试,您可以有多个方案。现在,场景数据对于JSON和XML可以是相同的,并且您可以读取一个通用的JSON文件。请参考以下示例,了解如何使用JSON创建XML:https://github.com/intuit/karate/blob/master/karate-junit4/src/test/java/com/intuit/karate/junit4/xml/xml.feature
如果您仍然在通用功能中同时坚持使用JSON和XML,请查看以下示例:https://github.com/intuit/karate/tree/master/karate-demo/src/test/java/demo/loopcall
上面还有一个调用JavaScript函数的示例。另外,请仔细阅读文档。