首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在loadimpact/k6中通过一条命令执行多个k6脚本?

如何在loadimpact/k6中通过一条命令执行多个k6脚本?
EN

Stack Overflow用户
提问于 2018-03-05 23:13:27
回答 3查看 6.5K关注 0票数 11

正如官方loadimpact/k6文档中所指出的,我们能够执行单个k6脚本,如下所示:

代码语言:javascript
复制
k6 run ../tests/http_get.js

如何在一次运行中执行多个脚本文件?具体地说,是驻留在给定本地目录中的所有脚本。类似于:

代码语言:javascript
复制
k6 run ../tests/

k6是否开箱即用支持此功能?

EN

回答 3

Stack Overflow用户

发布于 2018-04-10 04:12:55

根据您的设置,有几种不同的方法可以解决此问题。一种非常简单的方法是在k6中派生bash run命令。

代码语言:javascript
复制
#!/bin/sh 
k6 run test1_spec.js &
k6 run test2_spec.js &
k6 run test3_spec.js

您可以很容易地编写一些更复杂的bash脚本来读取/tests/目录中的所有内容,并像这样运行它们。我选择这样做是因为我有一些自定义的输入参数可以提供给每个特定的测试。

另一种方法是编写一个docker编写脚本来做几乎相同的事情。这将为每个测试启动一个docker容器,并在其中运行它。linux镜像只不过是一个添加了k6二进制文件的小型k6镜像。

代码语言:javascript
复制
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环境和本地计算机上同时运行多个测试。

票数 9
EN

Stack Overflow用户

发布于 2018-03-06 17:35:07

目前,k6只接受一个脚本文件,并运行导出的默认函数。

代码语言:javascript
复制
import {sleep} from "k6";
import http from "k6/http";

export default function() {
    http.get("http://test.loadimpact.com/");
    sleep(2);
}

也许,您可以通过使用模块来实现您的目标。将逻辑拆分成模块有助于组织代码,并允许在不同的测试中重用常见用例。

查看k6 Modules documentation

代码语言:javascript
复制
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

票数 4
EN

Stack Overflow用户

发布于 2018-12-01 04:25:34

使用&将并行运行测试,如果您希望按顺序运行并检索组合结果,我建议:

代码语言:javascript
复制
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
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49113558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档