在 Artillery 中跨 YAML 文件使用全局变量

Posted

技术标签:

【中文标题】在 Artillery 中跨 YAML 文件使用全局变量【英文标题】:Using global variables across YAML files within Artillery 【发布时间】:2019-09-27 08:36:01 【问题描述】:

我有什么办法可以说,定义一个 URI 将在不同的 .yml 文件中用于不同的 Artillery 负载测试?

我想在多个 .yml 文件中使用相同的 URI 来定义 config 部分中的 target

我在Artillery docs看到了以下内容:

可以通过 $processEnvironment 模板变量下的环境变量动态设置值。

例如,通过 SERVICE_API_KEY 环境变量为所有请求设置默认 HTTP 标头

他们展示了一个示例文档:

导出 SERVICE_API_KEY="012345-my-api-key"

火炮运行 my-test.yml

但是我不确定如何实现这一点,因为我正在使用 package.json 文件来运行 artillery run my-test.yml 命令。

【问题讨论】:

YML 与 YAML 不同,并且 YAML 文件的推荐扩展名至少自 2006 年 9 月以来一直是 .yaml。您引用的示例使用了正确的文件名,您似乎在您的帖子的其余部分中误读/歪曲了.. @Anthon - 哎呀。在那里混合网络示例和我自己的代码库。现在编辑为一致。除了我的语法错误之外,对此事有什么想法吗? 抱歉,没有。我会收到带有 yaml 标记的帖子的通知(因为我为 YAML 开发了一个 Python 加载/转储程序包),但我不知道 Artillery。 @Anthon 道歉,点击我看到的第一个。现已将标签更改为 app.yaml。 【参考方案1】:

这是我自己想出来的:

在 package.json 中创建一个新脚本。随心所欲地调用它,并执行类似的操作:

"scripts": 
    "start": "set ENV=https://yoursite.com&&artillery run -k yourtest.yml"

在 .yml 文件本身中是这样的:

config:
  target: "$processEnvironment.ENV"

这样称呼它:

npm run start

【讨论】:

有没有一种方法可以指定多个变量? 您可以拆分 common-config.yml 作为另一个选项。请参阅此处的 --config 部分:artillery.io/docs/cli-reference【参考方案2】:

IDK 为什么对我来说导出有效,我的意思是:

"scripts": 
    "start": "export ENV=https://yoursite.com&&artillery run -k yourtest.yml"

【讨论】:

以上是关于在 Artillery 中跨 YAML 文件使用全局变量的主要内容,如果未能解决你的问题,请参考以下文章

artillery 学习一 简单使用

在无限 UIScrollView 中跨页面拖动视图

Kubernetes YAML 文件全字段详解

Artillery 是不是支持 GET 和 POST 以外的 html 方法?

sh 在AWS上使用Artillery.io测试您的Web层Auto Scaling组

Artillery.io 如何发送标头