我是空手道合同测试的新手。我有一个spring Boot 应用程序,我为它编写了一个Karate测试,如下所示:
Background:
* call read('docker-operations.feature')
* url 'http://localhost:8080'
* def path = 'myController/filter'
* def openApiSpec = read('schemas/filtering.json')
* def requestSchema = openApiSpec.components.schemas.filtering_request
* def responseSchema = openApiSpec.components.schemas.filtering_200_response
# needs to be converted to String because if it stays as JSON, karate will automatically convert that JSON into Map in Java class
* def requestSchemaString = karate.toString(requestSchema)
* def responseSchemaString = karate.toString(responseSchema)
* def validRequest = read('schemas/valid-request.json')
* def invalidRequest = read('schemas/invalid-request.json')
* def invalidResponse = read('schemas/invalid-response.json')
Scenario: Valid Response Scenario
Given path path
And request validRequest
When method POST
Then status 200
* print 'Schema JSON:', responseSchema
* print 'Response JSON:', response
* def responseString = karate.toString(response)
And assert Java.type('feature.JsonValidator').isValid(responseSchemaString, responseString)
我使用的是生成的openAPI规范(filtering.json)。但我有这样的情况:我需要运行测试与当前的API版本,与以前的API版本和所有以前的API版本,我们支持。如果可能的话,如何处理空手道的这种情况?我知道使用SPring云,我可以通过Maven来实现。
1条答案
按热度按时间thtygnil1#
我不认为这是合理的期望从空手道,这在很大程度上取决于您的环境,以及您如何设置以前和当前版本。也许一个数据驱动的测试,你在所有版本上循环是要走的路。
考虑到这不是空手道直接支持的,但我知道一些团队已经在空手道上编写了一些例程来实现这一点。我们欢迎对Karate的贡献,它是开源的。
就我个人而言,我认为你从测试模式(这是你似乎正在做的)中获得的回报并不值得:https://www.linkedin.com/pulse/api-contract-testing-visual-guide-peter-thomas/