如何在长时间运行的空手道测试中自动刷新令牌?

问题描述 投票:0回答:1

我有一个karate-config.js,用于调用令牌功能来获取令牌,它返回不同令牌的映射,其中用户具有不同的访问权限。 可以说,如果我是管理员,则有不同的令牌,如果我是普通用户,则有不同的令牌。在我使用的 karate-config.js 中

var jwt =karate.callSingle("classpath:GeTokens.feature",config);
config.admin=jwt.admin;
config.user=jwt.user;

现在,在配置中设置此令牌后,它会直接在我的功能文件中使用。

但问题是这个令牌会在 30 分钟后过期,而且我们有大量测试接近 200 个功能文件,因此立即执行它们会导致令牌过期。

有什么办法可以实现令牌每25分钟自动刷新一次吗?

我已经完成了这个如何在空手道中的功能运行之间共享变量?而且它不会自动进行刷新,对我没有帮助,因为在我的情况下,某些场景也需要超过 30 分钟。

java testing karate karate-call-single
1个回答
0
投票

在使用空手道加特林集成运行长期性能测试时,我也遇到了同样的问题。我很容易使用空手道内置的 callSingleCache 来解决问题。 这最初会将您的令牌写入缓存文件,并在给定的时间阈值上重新调用您的 callSingle 并将新令牌重新写回缓存文件正常使用。

您需要做的就是使用 karate.configure 设置 callSingleCache。我将它直接设置在我的 karate-config.js 中的 callSingle 之上

karate.configure('callSingleCache', { minutes: 25 });
var jwt = karate.callSingle('classpath:GeTokens.feature',config);

默认情况下,Karate 将使用目标(或构建)作为“缓存”文件夹,您可以通过添加 dir 键来覆盖该文件夹:

karate.configure('callSingleCache', { minutes: 25, dir: 'some/other/folder' });
© www.soinside.com 2019 - 2024. All rights reserved.