在空手道 DSL 测试中使用环境变量

Posted

技术标签:

【中文标题】在空手道 DSL 测试中使用环境变量【英文标题】:Using environment variables in Karate DSL testing 【发布时间】:2019-03-20 02:21:34 【问题描述】:

我想将GitLab CI 合并到我的Karate 测试中。我想使用不同的用户名和密码循环执行我的测试,以确保我们的 API 端点正确响应不同的用户。

考虑到这一点,我希望能够将用户名和密码作为安全环境变量存储在 GitLab 中(而不是在 karate-config 中作为纯文本)并让 Karate 根据需要拉取它们来自karate-config 或功能文件。

查看文档和 *** 问题,我还没有看到正在完成的示例。

更新新信息

关于下面彼得的评论,这是我需要的,我正在尝试将其设置如下:

在 karate-config 中设置客户端 ID:var client_id = java.lang.System.getenv('client_id');

在实际的配置对象中:clientId: client_id

在我的功能文件中尝试访问它:* def client_id = clientId

不幸的是,它仍然是 null。

【问题讨论】:

【参考方案1】:

您可以使用 karate.properties 读取空手道中的环境变量,

例如,

karate.properties['java.home']

如果这有助于您读取在 gitlab 上安全保存的环境变量,那么您可以在 karate-config 中使用它进行身份验证。

但是如果你有太多用户,你的配置和环境变量会显得很麻烦。

如果您想为多个用户运行一些功能,我建议您查看这篇文章,

Can we loop feature files and execute using multiple login users in karate

编辑:

按照 peter 的建议使用 java 互操作:

var systemPath = java.lang.System.getenv('PATH');

查看哪些是所有变量实际暴露的尝试,

var evars= java.lang.System.getenv();
karate.log(evars);

并查看所有环境变量的列表。

【讨论】:

巴布:我认为这就是 OP 正在寻找的:github.com/intuit/karate/issues/547#issuecomment-427017681 @PeterThomas 这正是我想要的。我已经用我正在尝试但没有成功的方式更新了我的问题。 @drew2 好的。我已经尝试过了,它可以工作,根据答案尝试使用命令行参数的稍微更明确的方式。否则请使用此过程:github.com/intuit/karate/wiki/How-to-Submit-an-Issue @drew2 -Dsome.name=foo在命令行,karate.properties['some.name']获取karate-config.js中的值 Peter:我怎么会忘记互操作:P,是的,从命令行传递是最好的选择。

以上是关于在空手道 DSL 测试中使用环境变量的主要内容,如果未能解决你的问题,请参考以下文章

空手道 DSL - 使用重试直到检查数组,直到所有项目中都存在特定的键值对[重复]

空手道 DSL 框架是不是能够将 POST 请求作为 url 编码格式传递?

空手道 DSL:获取连接超时错误

如何在空手道中使用变量作为json键?

使用环境变量时如何在 ktor 中进行测试?

postman使用之四:设置读取变量和切换环境