在 K6 的所有 API 中参数化相同的变量

Posted

技术标签:

【中文标题】在 K6 的所有 API 中参数化相同的变量【英文标题】:Parameterization same variable in all APIs in K6 【发布时间】:2020-10-06 16:37:18 【问题描述】:

我正在从 json 响应中提取 json 值并将其存储到数组中并返回相同的数组,但值越来越不确定。在设置功能中,我可以打印值。

export function setup() 
    let code = [];
    code = object.func_name();
    code.push();
    console.log('code:::' + code);     // code::: 92409391-4d82-8028-5yy
    return code;


export function abc(code) 
    console.log('code: ' + code);  


export default function(code) 
    console.log('code1: ' + code);  

得到 TypeError: Cannot read property 'push' of undefined 这个错误。 但是当我更改推送功能时 -

if (!Array.isArray(authcode)) 
  authcode = [];

authcode.push();

我在 abc 和代码的默认函数中获得值 undefined

【问题讨论】:

【参考方案1】:

当您应该从 setup() 返回简单数据时,您正在用 object.func_name() 返回的任何内容(可能是某个对象)覆盖数组 let code = []

请记住,k6 中的每个 VU 都是不同的 javascript 运行时,setup() 也在其自己独立的运行时中执行,因此您可以返回一个带有方法等的对象,仅返回纯数据。从setup() 返回的数据本质上是序列化为 JSON,然后在每个 VU 中反序列化。

【讨论】:

好的,那么如何在所有函数中传递提取的值? object.func_name() 在整个脚本中也执行一次,因此在 setup() 中声明它 不知道object.func_name() 做了什么,但如果它只是返回一个字符串之类的东西,你就不能只是return String(object.func_name()) 或类似的东西。只需将其作为可以转换为 JSON 的简单数据返回即可。 实际上我从 setup() 返回的任何东西都不能在默认或任何其他函数中使用。我认为 setup() 的范围与自身有关。 B'cz 我在其他或默认函数中尝试过的相同的事情,然后我可以在整个项目或屏幕中传递这些全局或环境变量。但不能在任何其他函数中使用 setup() 的环境或全局变量。

以上是关于在 K6 的所有 API 中参数化相同的变量的主要内容,如果未能解决你的问题,请参考以下文章

SSIS参数化映射

Jmeter参数化

Jmeter接口测试变量及参数化

Jmeter组件参数化

来自 .Net 的 Oracle 参数化查询

【第五章】jemter参数化实战