当前位置: 首页 > 知识库问答 >
问题:

在JMeter中,如何在用户参数或CSV数据集配置中设置多个动态变量

满和安
2023-03-14

对JMeter来说很新(也是一个很长时间的堆栈溢出侦听器,但第一次调用时,所以请对我放心),所以任何帮助都将不胜感激。

我正在尝试设置一个JMeter测试,该测试使用多个动态生成的访问令牌来跨场景运行。我目前有一组使用CSV数据集配置的数据,其中包含用户电子邮件和密码的登录凭据,例如:

email1@email.com,password1
email2@email.com,password2

接下来,我向生成accessToken的Login服务发送HTTP POST请求。然后,我使用JSON Extractor获取生成的accessToken。之后,我使用BeanShell断言来存储accessToken属性/变量。

我的问题似乎就在最后一步,因为它只存储最后生成的变量,而不是每个生成的accessToken。我希望能够为每个电子邮件密码组合存储/覆盖抓取的accessToken。我希望它按如下方式修改/填充CSV文件:

email1@email.com,password1,accessToken1
email2@email.com,password2,accessToken2

我也试过使用前置处理器

用户参数屏幕截图

我希望“userBearerToken”变量与测试一起更新/覆盖,但我找不到这样做的方法,或者目前是否可以这样做。

我发现很难说出我想问什么,但基本上我想存储多个动态生成的变量(更改和超时的accessToken),并在其他测试中使用它们。我不在乎哪个组件可以处理这个问题(CSV或用户参数),但我需要能够用相应的电子邮件密码凭据存储这些变量。

共有1个答案

董建茗
2023-03-14

如果您想将< code>accessToken值存储到JMeter属性中,以便在其他线程组中使用,请注意这些属性对于整个JVM是全局的,并且会一直保留到JMeter重新启动,因此如果您定义了一个< code>accessToken属性,每个JMeter线程(或迭代)都会覆盖该值。

解决方案是使用当前线程(或迭代)编号作为前缀或后缀,这可以使用__${__threadNum}函数或相关JMeter变量来完成,具体取决于迭代的定义方式或两者。

示例设置:

  1. 在第一个线程组中:${__setProperty(access_token_${__threadNum},bar,)}
  2. 在第二个线程组中:${__P(access_token_${__threadNum},)}

演示:

如果您想将值保存到一个文件中,写入当前文件并不是一个好主意,因为您可能(并且很可能会)由于某种形式的竞争条件而得到格式错误的文件。所以我建议使用样本变量属性。

如果将下一行添加到用户属性文件中:

sample _ variables =电子邮件、密码、访问令牌

JMeter将在.jtl结果文件中存储名为${email}${password}、${accessToken}的变量及其值,该文件基本上是CSV文件,可以在其他任何地方重复使用。

但是,如果您只需要存储凭据和令牌,您可以使用Flexible File Writer插件并将其配置为将上述变量值保存到单独的文件中,相关配置将非常简单:

variable#0,variable#1,variable#2

您可以使用JMeter插件管理器安装Flexible File Writer插件

 类似资料:
  • 尝试通过在 JMeter 中使用 CSV 配置来比较源表和目标表 (SQL) 之间的数据/计数,如下所示。有可能以这种方式实现吗? JMeter中的CSV配置 只是想比较所有表的STAGING和DW之间的计数。对此有什么想法吗?

  • 我试图在jeter中的两个CSV数据集配置之间共享变量,但不幸的是,所有配置元素都同时加载,因此它无法从CSV文件中读取新导入的变量。 < li >我想导入包含登录名、密码、第三变量CSV数据集配置测试计划映像的CSV文件 < li >我想将第三个变量作为文件路径的一部分传递给下一个CSV数据集配置第二个Csv数据集配置,其中包含第一个变量的变量 实际结果:Java . lang . illega

  • 我正在创建一个Jmeter docker容器。测试输入由CSV(数据集配置)驱动。我需要在脚本中设置什么文件名路径

  • 我在jmeter中使用CSV数据集配置进行参数化,但我希望设置如下:线程总数为20。我的CSV中有40个值。我希望我的所有线程在第一次迭代中取第一个值,在第二次迭代中取第二个值。但是JMeter在第一次迭代中就为所有20个用户赋予了独特的价值。请帮帮我,我该怎么做?

  • 我试图在JMeter中加载我的CSV文件,但我一直得到下面的错误。我将文件结构设置为 c: \claimstest\claimsload.jmx C:\索赔stest\policies.csv

  • 如何使用CSV数据集配置在Jmeter的不同线程中登录具有不同输入的多个用户?我已经添加了CSV数据集配置,但线程仅选择第一个条目,我无法看到其他用户登录的响应