对于负载测试vu
阶段我生成了很多具有唯一 ID 的对象,并将它们放入数据库中。我想在期间删除它们teardown
阶段以免污染数据库。
当保持这样的状态时
let ids = [];
export function setup() {
ids.push('put in setup id');
}
export default function () {
ids.push('put in vu id');
}
export function teardown() {
ids.push('put in teardown id');
console.log('Resources: ' + ids);
}
它不起作用,因为数组始终包含我放入的数据teardown
stage.
由于众所周知,在阶段之间传递数据也不起作用Cannot extend Go slice
问题,但即使这样,你也无法传递数据vu
阶段到teardown
因为它总是从以下位置获取数据setup
stage.
唯一剩下的解决方案是玩弄console log
或者只使用简单的 ids 预设并在测试中使用它们。还有别的办法吗?
The setup()
, teardown()
,以及 VU 的default
函数在完全不同的 JavaScript 运行时执行。对于分布式执行,它们可能在完全不同的机器上执行。所以你不能只拥有一个全球ids
您可以从任何地方访问的变量。
这个限制就是为什么你应该返回你关心的任何数据的原因setup()
- k6 将复制它并将其作为参数传递给default
功能(这样您就可以使用您设置的任何资源)和teardown()
(这样你就可以清理它们)。
你的例子必须看起来有点像这样:
export function setup() {
let ids = [];
ids.push('put in setup id');
return ids;
}
export default function (ids) {
// you cannot push to ids here
console.log('Resources: ' + ids);
}
export function teardown(ids) {
console.log('Resources: ' + ids);
}
您可以在以下位置找到更多信息:https://k6.io/docs/using-k6/test-life-cycle https://k6.io/docs/using-k6/test-life-cycle
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)