我有一个正在运行多个场景的 K6 测试。我想将测试摘要导出到 Elastic,并作为其中的一部分,希望包括测试运行的开始和结束时间。我试图在我的默认函数中设置这些值,但当我到达 handleSummary() 方法时,这些值不会粘住。
`let startTime;
export default function () {
.. all scenarios and at the end i have a check
if (!startTime){
startTime = exec.scenario.startTime;
}
}`
export async function handleSummary(data) { console.log("Start Time", startTime); }
在我的handleSummary 方法中,startTime 未定义。以前有人尝试过这个吗?有没有更好/更简单的方法在摘要方法中获取此信息?
提前谢谢您!
每个k6 VU(虚拟用户)都是独立的,两个VU之间不能共享数据。每个 VU 都会完全解析您的测试脚本文件,执行您的 init context 中的任何代码(导出函数之外的部分),然后重复执行您的测试函数。 您可以将
setup
、teardown
和 handleSummary
生命周期函数视为“特殊 VU”:它们不与任何其他 VU 共享数据或状态,但有些可以返回数据,有些可以作为函数接收数据参数。
不幸的是,场景的开始时间在传递给
handleSummary
的对象中不可用。它仅包含 state.testRunDurationMs
,可用于计算测试的大致开始时间(请注意,不是每种情况)。