spring Karate合约测试如何处理API版本控制?

kcugc4gi  于 2023-10-15  发布在  Spring
关注(0)|答案(1)|浏览(115)

我是空手道合同测试的新手。我有一个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来实现。

thtygnil

thtygnil1#

我不认为这是合理的期望从空手道,这在很大程度上取决于您的环境,以及您如何设置以前和当前版本。也许一个数据驱动的测试,你在所有版本上循环是要走的路。
考虑到这不是空手道直接支持的,但我知道一些团队已经在空手道上编写了一些例程来实现这一点。我们欢迎对Karate的贡献,它是开源的。
就我个人而言,我认为你从测试模式(这是你似乎正在做的)中获得的回报并不值得:https://www.linkedin.com/pulse/api-contract-testing-visual-guide-peter-thomas/

相关问题