【发布时间】:2022-08-24 13:33:42
【问题描述】:
我想在设置部分存储一个 id,当我为端点上传文件时得到什么,之后,我需要多次取回默认部分中上传的元素。 我尝试使用带有 setter 和 getter 的辅助函数,但它在默认函数中返回未定义。 有没有什么简单的方法可以在设置函数和默认值之间存储一个数字?
【问题讨论】:
标签: k6
我想在设置部分存储一个 id,当我为端点上传文件时得到什么,之后,我需要多次取回默认部分中上传的元素。 我尝试使用带有 setter 和 getter 的辅助函数,但它在默认函数中返回未定义。 有没有什么简单的方法可以在设置函数和默认值之间存储一个数字?
【问题讨论】:
标签: k6
是的,这是可能的,它在Test Life Cycle – Setup and Teardown Stages 中有记录和解释。
setup 函数可以返回一个对象,然后将其作为第一个参数传递给每个 VU 的默认函数:
import http from 'k6/http';
export function setup() {
const res = http.get('https://httpbin.test.k6.io/get');
return { data: res.json() };
}
export function teardown(data) {
console.log(JSON.stringify(data));
}
export default function (data) {
console.log(JSON.stringify(data));
}
关于您可以在设置和默认或拆卸之间传递的数据类型有一些限制,但您提到它是一个应该没问题的数字。基本上任何东西都支持,只要它可以序列化到 JSON 和从 JSON 序列化。
对于您的用例,它可能如下所示:
import http from 'k6/http';
const file = open('./path/to/file', 'b');
export function setup() {
const uploadData = {
fileUploadFieldName: http.file(file, 'yourfilename'),
};
const res = http.post('https://example.com/upload', uploadData);
return { documentId: res.json('document.id') };
}
export default function (data) {
const res = http.get(http.url`https://example.com/documents/${data.documentId}`);
// ...
}
【讨论】: