在 Karate DSL 测试中使用环境变量

dre*_*ew2 6 gitlab karate

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

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

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

更新新信息

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

在空手道配置中设置客户端 ID:
var client_id = java.lang.System.getenv('client_id');

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

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

不幸的是,它仍然显示为空。

Bab*_*ran 8

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

例如,

karate.properties['java.home']
Run Code Online (Sandbox Code Playgroud)

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

但是如果您有太多用户,您的配置和环境变量会看起来很麻烦。

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

我们可以循环功能文件并在空手道中使用多个登录用户执行吗

编辑:

按照 peter 的建议使用 java interop:

var systemPath = java.lang.System.getenv('PATH');
Run Code Online (Sandbox Code Playgroud)

看看哪些变量实际上被公开了,尝试,

var evars= java.lang.System.getenv();
karate.log(evars);
Run Code Online (Sandbox Code Playgroud)

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

  • @drew2 `-Dsome.name=foo` 在命令行上,和 `karate.properties['some.name']` 来获取 `karate-config.js` 中的值 (2认同)