首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >K6:测试生命周期中的授权

K6:测试生命周期中的授权
EN

Stack Overflow用户
提问于 2020-11-11 23:47:26
回答 1查看 1.2K关注 0票数 1

我一直在阅读K6文档,并且很难找到符合我需要的K6脚本的方法。我脑海中想象的情景:

代码语言:javascript
复制
// 1. init code
export function setup() {
  // 2. setup code
  // The VU would get setup here with authentication once
}
export default function (data) {
  // 3. VU code
  // The VU would run this code a repeated amount of times
}
export function teardown(data) {
  // 4. teardown code
  // The VU would be deauthed here after the VU code has ran its course

不幸的是,根据我在这里读到的:https://k6.io/docs/using-k6/test-life-cycle,我的理解是上面的场景是不可能的。"setup在测试开始时调用,在init阶段之后调用,但在VU阶段之前调用(默认函数),在测试结束时调用teardown (default函数)。因此,在执行setupteardown函数时,VU数为0。“我的理解是,在上面的场景中,所有的VU都会使用相同的身份验证来运行VU代码,而不是每个VU获得自己的单独身份验证。

如果我简单地排除了设置部分和拆卸部分,那么每个VU都会在每个循环上获得新的身份验证:

代码语言:javascript
复制
export default function (data) {
  // 3. VU code
  // VU gets authenticated
  // VU does a bunch of stuff
  // VU clears authentication
}

是否有一种方法可以根据我的意图来设计K6脚本(VU认证一旦-> VU代码循环->设计结束一次)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-12 08:05:10

是的,每次测试运行时,安装和拆卸都是全局的。

有一个关于每个VU设置/拆卸的问题,但是它没有被高度优先化,因为有.其他似乎更重要的事情:)。

我还想指出,安装、删除和默认代码在单独的VMs中运行,其中惟一的共享内存(以及它们之间的共享内存)是安装程序返回的data,它是默认和删除的第一个参数。

目前有两个解决办法(取得了不同的成功):

  1. 如果您不需要进行去身份验证(在很多情况下,这对于去身份验证都很好),那么您可以只在第一次迭代时使用类似于if (__ITER == 0) { authenticate(); }的代码进行身份验证。
  2. 使用setup可以返回对象数组并对setup代码中的所有VUs进行身份验证的事实,然后每个VU都可以使用执行default函数的__VU变量从数组中获得它们的身份验证(我猜这是某种令牌)。稍后,teardown将得到相同的数组,并可以对所有内容进行身份验证。您可能需要增加一些]超时](https://k6.io/docs/using-k6/options#setup-timeout)和/或使用http.batch

取决于你将如何认证和去认证.也许还有一个更好的选择:)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64795860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档