我正在测试一个困难的微服务,它与 10 多个下游服务交互。存在很多逻辑和排列,因此尝试提出自动化解决方案是很棘手的。我正在尝试摆脱当前的黄瓜/java和模板wiremock解决方案,因为我觉得它过于复杂,限制了黑盒覆盖范围。
我之前使用过模拟服务器,我发现我无法在后台设置常量变量,这些常量变量可以用于每个功能,或者在使用场景本身写入该常量时被覆盖。我知道模拟服务器中不允许场景大纲,我希望在后台设置常量以节省空间,在不同的场景中一遍又一遍地复制相同的常量。
我做错了什么吗?这样的事情可能吗? 我正在使用空手道1.4.0
“我希望在后台设置常量,以节省空间,在不同的场景中一遍又一遍地重复相同的常量。”
您可以在 karate.config.js 中设置所有常量,然后这些常量可在测试套件中全局使用。请参阅此处的文档:https://github.com/intuit/karate#configuration
另一个选项是在单独的功能文件中设置所有常量,然后从需要使用常量的功能中调用/读取常量功能文件。
创建一个名为
constants.feature
的常量特征文件
def constValue = "constant"
现在您可以在后台调用该功能
* call read(constants.feature)
并像这样访问它们
* match constValue == "constant"
需要注意的几件事是
或者在用场景本身写入该常量时被覆盖。
我应该更仔细地看一下笔记 它清楚地说明了背景(这在逻辑上是有意义的)在测试前设置了执行,但在每个场景之前都没有执行。
我为解决问题所做的只是创建一个标准模拟响应,用于公共数据返回。为了进行一些细微的调整,我创建了一个可配置的模拟响应,然后用该特定模拟场景中定义的值覆盖该响应。
我还没有研究 js(空手道)模拟功能
有兴趣的请看下文
`Scenario: karate.request.header('uuid') == '9a19-b4f4871f5289'
* def NAME1_NBR = "122979"
* def NAME2_NBR = ""
* def response = read('./mockResponses/response_configurable.json')
* print response`
`Scenario: pathMatches('/cypress/x/link')
* def response = read('./mockResponses/response_standard.json')
* print response`
`Scenario: pathMatches('/xpress/r/servicelink/v1.0.0/30/uta')
* def response = read('./mockResponses/uta/utaResponse.json')`