如何在空手道中的功能运行之间共享变量? [英] How to share variables between feature runs in Karate?

查看:8
本文介绍了如何在空手道中的功能运行之间共享变量?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个应用程序,它使用karate-config文件中的karate.callSingle()创建一次令牌。

但是,这个令牌会在一段时间后过期,因此我可能需要在一些测试后重新创建它。

我的计划是在一个变量中设置创建时间,该变量可以在karate-config文件的后续迭代中共享,这样如果时间差足够大,我就可以重新创建令牌。

在空手道中有什么方法可以在karate-config中设置一个变量,以便在后续迭代中共享?

推荐答案

最后,我遵循了Peter Thomas的建议,通过"缓存"特性之间的属性来使用Java。我的实现如下:

var tokenRefreshTimeInMinutes = 5;
var myToken = {};
var KarateCache = Java.type('KarateCache');
var lastRefreshTime = KarateCache.get('lastRefreshTime');

if (!lastRefreshTime || differenceInMinutes(new Date(lastRefreshTime), new Date()) >= tokenRefreshTimeInMinutes) {
    myToken = karate.call('theFileRefreshingTheToken');
    KarateCache.add('lastRefreshTime', new Date().toUTCString());
    KarateCache.add('myToken', JSON.stringify(myToken));
} else {
    myToken = JSON.parse(KarateCache.get('myToken'));
}

使用这个简单的KarateCache Java类

private static final Map<String, String> KARATE_CACHE = new ConcurrentHashMap<>();

public static void add(String key, String value) {
    KARATE_CACHE.put(key, value);
}

public static String get(String key) {
    return KARATE_CACHE.get(key);
}

这篇关于如何在空手道中的功能运行之间共享变量?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆