在 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 中参数化相同的变量的主要内容,如果未能解决你的问题,请参考以下文章