我是否也可以对Json Api请求使用以下相同功能

时间:2018-06-26 16:55:15

标签: karate

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请求进行相同操作,请提出建议

1 个答案:

答案 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函数的示例。另外,请仔细阅读文档。