在 JMeter 中,如何在用户参数或 CSV 数据集配置中设置多个动态变量
In JMeter how do I set multiple dynamic variables in User Parameters or CSV Data Set Config
JMeter 的新手(也是很长一段时间的 Stack Overflow 侦听器,但第一次来电,所以请放轻松),如有任何帮助,我们将不胜感激。
我正在尝试设置一个 JMeter 测试,该测试使用多个动态生成的访问令牌来跨场景 运行。我目前有一组使用 CSV Data Set Config 的数据,其中包含用户电子邮件和密码的登录凭据,例如:
email1@email.com,password1
email2@email.com,password2
接下来我发送一个 HTTP POST request to the Login service which generates an accessToken. Then, I am using the JSON Extractor to grab the generated accessToken. After that I am using the BeanShell Assertion 来存储 accessToken property/variable。
我的问题似乎出在这最后一步,因为它只会存储最后生成的变量,而不是每个生成的 accessTokens。我希望能够 store/overwrite 为每个电子邮件密码组合获取 accessToken。我希望它像这样 modify/populate CSV 文件:
email1@email.com,password1,accessToken1
email2@email.com,password2,accessToken2
我也试过使用 Pre Processor > User Parameters
Screen shot of User Parameters
我想将 "userBearerToken" 变量 update/overwrite 与测试一起使用,但我找不到这样做的方法,或者目前是否可以这样做。
我发现很难说出我想问的内容,但基本上我想存储多个动态生成的变量(发生变化和超时的 accessTokens)并在其他测试中使用它们。我不关心哪个组件可以处理这个(CSV 或用户参数),但我需要能够存储这些变量及其相应的电子邮件密码凭据。
如果您想将 accessToken
值存储到 JMeter 属性 中以便在其他 Thread Group(s) 中使用,请注意属性对于整个 JVM 是全局的并且一直保留到JMeter 重新启动,因此如果您定义单个 accessToken
属性 - 每个 JMeter 线程(或迭代)将覆盖该值。
解决方案是使用当前线程(或迭代)编号作为前缀或后缀,这可以使用 __${__threadNum} function 或相关的 JMeter 变量来完成,具体取决于迭代的定义方式或两者。
示例设置:
- 在第一个线程组中:
${__setProperty(access_token_${__threadNum},bar,)}
- 在第二个线程组中:
${__P(access_token_${__threadNum},)}
演示:
如果你想将值保存到一个文件中,写入当前文件并不是最好的主意,因为你可以(而且很可能会)得到格式错误的文件,因为 race condition. So I would recommend using Sample Variables 属性 代替。
如果将下一行添加到 user.properties 文件:
sample_variables=邮箱、密码、accessToken
JMeter 会将名为 ${email}
、${password}
和 ${accessToken}
的变量及其值存储在 .jtl 结果文件中,该文件基本上是可以重复使用的 CSV 文件其他任何地方。
但是,如果您需要仅存储凭据和令牌,您可以使用 Flexible File Writer 插件并将其配置为将上述变量值保存到单独的文件中,相关配置如下简单如:
variable#0,variable#1,variable#2
您可以使用 JMeter Plugins Manager
安装 Flexible File Writer 插件
JMeter 的新手(也是很长一段时间的 Stack Overflow 侦听器,但第一次来电,所以请放轻松),如有任何帮助,我们将不胜感激。
我正在尝试设置一个 JMeter 测试,该测试使用多个动态生成的访问令牌来跨场景 运行。我目前有一组使用 CSV Data Set Config 的数据,其中包含用户电子邮件和密码的登录凭据,例如:
email1@email.com,password1
email2@email.com,password2
接下来我发送一个 HTTP POST request to the Login service which generates an accessToken. Then, I am using the JSON Extractor to grab the generated accessToken. After that I am using the BeanShell Assertion 来存储 accessToken property/variable。
我的问题似乎出在这最后一步,因为它只会存储最后生成的变量,而不是每个生成的 accessTokens。我希望能够 store/overwrite 为每个电子邮件密码组合获取 accessToken。我希望它像这样 modify/populate CSV 文件:
email1@email.com,password1,accessToken1
email2@email.com,password2,accessToken2
我也试过使用 Pre Processor > User Parameters
Screen shot of User Parameters
我想将 "userBearerToken" 变量 update/overwrite 与测试一起使用,但我找不到这样做的方法,或者目前是否可以这样做。
我发现很难说出我想问的内容,但基本上我想存储多个动态生成的变量(发生变化和超时的 accessTokens)并在其他测试中使用它们。我不关心哪个组件可以处理这个(CSV 或用户参数),但我需要能够存储这些变量及其相应的电子邮件密码凭据。
如果您想将 accessToken
值存储到 JMeter 属性 中以便在其他 Thread Group(s) 中使用,请注意属性对于整个 JVM 是全局的并且一直保留到JMeter 重新启动,因此如果您定义单个 accessToken
属性 - 每个 JMeter 线程(或迭代)将覆盖该值。
解决方案是使用当前线程(或迭代)编号作为前缀或后缀,这可以使用 __${__threadNum} function 或相关的 JMeter 变量来完成,具体取决于迭代的定义方式或两者。
示例设置:
- 在第一个线程组中:
${__setProperty(access_token_${__threadNum},bar,)}
- 在第二个线程组中:
${__P(access_token_${__threadNum},)}
演示:
如果你想将值保存到一个文件中,写入当前文件并不是最好的主意,因为你可以(而且很可能会)得到格式错误的文件,因为 race condition. So I would recommend using Sample Variables 属性 代替。
如果将下一行添加到 user.properties 文件:
sample_variables=邮箱、密码、accessToken
JMeter 会将名为 ${email}
、${password}
和 ${accessToken}
的变量及其值存储在 .jtl 结果文件中,该文件基本上是可以重复使用的 CSV 文件其他任何地方。
但是,如果您需要仅存储凭据和令牌,您可以使用 Flexible File Writer 插件并将其配置为将上述变量值保存到单独的文件中,相关配置如下简单如:
variable#0,variable#1,variable#2
您可以使用 JMeter Plugins Manager
安装 Flexible File Writer 插件