【问题标题】:How to get files and folders from a path in k6?如何从k6中的路径获取文件和文件夹?
【发布时间】:2022-10-06 22:31:18
【问题描述】:

如何从路径中获取文件和文件夹列表?搜索时是否可以应用正则表达式?

  • 你到底想做什么?你的用例是什么?我不认为这是可能的,但这个问题缺乏正确回答的细节。
  • @knittl 就像想要检查目录中某些格式的文件名一样简单。将使用这些文件来测试不同的有效负载,作为集成/业务规则测试的实际场景,而不仅仅是负载测试。
  • 这听起来像是应该在 k6 之外完成的事情。 k6 只会执行单个脚本文件,并且不支持扫描本地文件系统。

标签: k6


【解决方案1】:

默认情况下,您无法从 k6 脚本访问文件系统,这是因为设计选择(安全性)。如果这些文件是 js 文件,您可以导入它们或将它们与 webpack 捆绑在一起。

如果你真的需要阅读文件,你可以写一个k6 extension。例如xk6-file 是 k6 扩展写作到文件。你可以从这个开始。

【讨论】:

    【解决方案2】:

    我解决这个问题的方法是:

    1. 有要读取的文件列表。我编写了一个脚本(在我的例子中是 python),它将读取包含我要使用的文件的目录并创建一个包含文件数组的 json 文件:`["file1.ext", "file2.ext", "fileN.分机"]
    2. 在测试中,我使用k6的SharedArray来获取之前的列表,对其进行迭代,并创建一个包含之前所有文件内容的最终数组。

      代码看起来与此非常相似:

      const data = new SharedArray('reqs', function () {
        const file = open('/requests_list.json');
        const list = JSON.parse(file);
      
        const requests = [];
      
        list.forEach(filePath => {
          requests.push(open(`/requests/${filePath}`))
        });
      
        return requests;
      });
      
      export default function () {
        const body = data[Math.floor(Math.random() * data.length)];
        const res = http.post(url, body, params);
        check(res, { 'status was 200': (r) => r.status == 200 });
        sleep(1);
      }
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-08
      • 2013-06-08
      相关资源
      最近更新 更多