0

我正在尝试实现负载测试测试脚本,该脚本应根据场景执行:

  • 会有几个“生产者”线程,它们会通过网络服务将文件上传到数据库;

  • 很少有“消费者”线程会下载“生产者”上传的文件。

目前,我被困在数据库清理上。我可以在发送“生产者”请求后使用 JSON 提取器获取记录 ID,并使用此 ID 来模拟文件下载。但是这个 ID 在 Tear Down Thread Group 中是不可见的。

你能告诉我,我如何将值从将文件上传到 Tear Down Thread Group 的 Thread Group 传递?

目前,我的 JMeter 4 项目使用具有以下配置的对象:

  1. Producer Thread Group #1(该线程组上传下载文件)
    • POST HTTP 请求(此请求上传文件)
    • JSON 提取器
      • 创建变量的名称 = id_to_delete
      • JSON 路径表达式 = $.record-id
      • 比赛编号 = -1
    • GET HTTP 请求(此请求下载文件)
  2. 生产者线程组 #2
  3. 生产者线程组 #3
  4. ...
  5. 拆解线程组。
4

2 回答 2

1

根据JMeter 用户手册:

属性与变量不同。变量是线程本地的;属性对所有线程都是通用的,需要使用 __P 或 __property 函数来引用。

因此,您必须使用 JMeter 属性在线程组之间传递值,例如:

  • 设置属性:使用__setProperty()函数
  • 要获取另一个线程组中的属性值,请使用__P() 函数
  • 要设置用户特定(每个线程)的属性,请使用__threadNum()函数作为后缀的属性前缀

示例设置属性:

${__setProperty(foo_${__threadNum},${YOUR_VARIABLE_HERE})}

获取属性的示例:

${__P(foo_${__threadNum},)}

演示:

线程组之间的 JMeter 属性共享

更多信息:编织一颗珍珠二:如何在不同线程组中使用变量

于 2018-04-11T08:02:22.083 回答
0

JMeter 变量不能在线程组之间共享(包括 TearDown),

您可以将变量值复制到 JMeter 属性并在 Tear Down 中使用它,例如在JSR223 Sampler中

props.put("id_to_delete", vars.get("id_to_delete"));

或使用__setProperty函数将值复制到属性:

${__setProperty(id_to_delete, ${id_to_delete},)}
于 2018-04-11T07:34:25.667 回答