正如官方loadimpact/k6文档中所指出的,我们能够执行单个k6脚本,如下所示:
k6 run ../tests/http_get.js如何在一次运行中执行多个脚本文件?具体地说,是驻留在给定本地目录中的所有脚本。类似于:
k6 run ../tests/k6是否开箱即用支持此功能?
发布于 2018-04-10 04:12:55
根据您的设置,有几种不同的方法可以解决此问题。一种非常简单的方法是在k6中派生bash run命令。
#!/bin/sh
k6 run test1_spec.js &
k6 run test2_spec.js &
k6 run test3_spec.js您可以很容易地编写一些更复杂的bash脚本来读取/tests/目录中的所有内容,并像这样运行它们。我选择这样做是因为我有一些自定义的输入参数可以提供给每个特定的测试。
另一种方法是编写一个docker编写脚本来做几乎相同的事情。这将为每个测试启动一个docker容器,并在其中运行它。linux镜像只不过是一个添加了k6二进制文件的小型k6镜像。
version: '3'
services:
k6_test:
image: loadimpact/k6
container_name: test_k6
volumes:
- ./:/specs
command: run /tests/test_spec.js
ports:
- "6565:6565"
k6_test2:
image: loadimpact/k6
container_name: test2_k6
volumes:
- ./:/specs
command: run /tests/test2_spec.js
ports:
- "6566:6566"这两种方法都应该允许您在CI环境和本地计算机上同时运行多个测试。
发布于 2018-03-06 17:35:07
目前,k6只接受一个脚本文件,并运行导出的默认函数。
import {sleep} from "k6";
import http from "k6/http";
export default function() {
http.get("http://test.loadimpact.com/");
sleep(2);
}也许,您可以通过使用模块来实现您的目标。将逻辑拆分成模块有助于组织代码,并允许在不同的测试中重用常见用例。
import {sleep} from "k6";
import mainPageUserFlow from "../cases/main-page";
import billingUserFlow from "../cases/billing";
export default function() {
mainPageUserFlow();
billingUserFlow();
sleep(2);
}此外,您还可以更改脚本中不同虚拟用户的执行方式,如https://community.k6.io/t/how-to-distribute-vus-across-different-scenarios-with-k6/49
发布于 2018-12-01 04:25:34
使用&将并行运行测试,如果您希望按顺序运行并检索组合结果,我建议:
exit_c=0
(
k6 run script_1.js || exit_c=$?
k6 run script_2.js || exit_c=$?
...
k6 run script_n.js || exit_c=$?
exit $exit_c
)https://stackoverflow.com/questions/49113558
复制相似问题