karate - 通过传入参数重用其他功能文件中的空手道测试
问题描述
我们有一组服务,它们都公开某些公共端点,例如健康检查、版本信息等。我正在尝试使用空手道以可重用的方式为这些多个服务编写冒烟测试,我可以只传递服务名称和端点并为每个服务执行测试。
basicChecks.feature
Feature: Smoke Test. verify health check and version and index are ok
Scenario: Verify that test server health check is up and running
Given url '#(baseUrl)'
Given path '/health'
When method get
Then status 200
And match response == "'#(name)' ok"
Given path '/version'
When method get
Then status 200
And match response contains {'#(name)'}
testServices.feature
Feature: Smoke Test for services.
Scenario: Verify that test server health check is up and running
* call read('basic.feature') { name: 'service1' , baseUrl : service1Url }
* call read('basic.feature') { name: 'service2' , baseUrl : service2Url }
空手道配置.js
function fn() {
var env = karate.env; // get java system property 'karate.env'
karate.log('karate.env system property was:', env);
if (!env) {
env = 'local'; // a custom 'intelligent' default
}
var config = { // base config JSON
appId: 'my.app.id',
appSecret: 'my.secret',
service1Url: 'https://myserver/service1'
service2Url: 'https://myserver/service2'
};
// don't waste time waiting for a connection or if servers don't respond within 5 seconds
karate.configure('connectTimeout', 5000);
karate.configure('readTimeout', 5000);
return config;
}
当我运行它时,我收到一个错误,提示传入时未拾取 baseUrl
20:27:22.277 karate.org.apache.http.ProtocolException: Target host is not specified, http call failed after 442 milliseconds for url: /health#(baseUrl) 20:27:22.278 cas/src/test/java/karate/smoke/basic.feature:7 When method get http call failed after 442 milliseconds for url: /health#(baseUrl) cas/src/test/java/karate/smoke/basic.feature:7
我查看了https://intuit.github.io/karate/#code-reuse--common-routines但无法弄清楚如何使用相同的测试但通过不同的端点?
或者也许因为我对空手道完全陌生,所以有比我概述的更好的方法来做到这一点?
感谢您的时间。
编辑 - 我正在尝试在同一环境中测试不同的微服务,而不是尝试切换不同的环境等。
解决方案
这不是推荐的方法。当您对不同的环境有不同的 URL-s 时,您应该使用文档中的方法(设置karate.env
)切换环境,而不是依赖于通过“调用”等重用。
示例:https ://stackoverflow.com/a/49693808/143475
如果你真的想要,你可以一个接一个地运行套件karate.env
,尽管这很少见。
或者,如果您只是尝试“数据”驱动测试,有很多方法,只需阅读文档并搜索 Stack Overflow Scenario Outline
:https ://stackoverflow.com/search?tab=newest&q=%5bkarate%5d%20Scenario%20Outline
如果您尝试使用“呼叫”进行此“聪明”重复使用,我强烈建议您不要这样做,请阅读此内容以了解原因:https ://stackoverflow.com/a/54126724/143475
编辑 - 我认为你遇到了这个问题,请阅读文档:https ://github.com/intuit/karate#rules-for-embedded-expressions
推荐阅读
- javascript - SNMP陷阱消息自定义解析
- java - Tomcat 8.0.33 因 Spring 安全性而崩溃
- amazon-web-services - AWS 阶梯函数成本核算
- ios - AVAudio Player 中的 iOS 13.1 崩溃
- reactjs - 如何将类型添加到主题旁边的组件自己的道具中?
- php - 在邮件中发送阿拉伯内容时,接收者在显示特殊字符的框中(在 Outlook 邮件中)
- php - 如何修复方法不允许的异常,我从 angular 7 到 laravel api 的 PUT 请求
- node.js - 获取找不到模块'nightwatch/lib/runner/run'
- flutter - 无数据弹出/推送到当前屏幕
- c# - 如何保护密码不被存储在进程转储MS word进程c#中