JMeter的新手(长时间的Stack Overflow侦听器,但是第一次调用者很长时间,所以对我来说请放心),因此将不胜感激。
我正在尝试建立一个JMeter测试,该测试使用多个动态生成的访问令牌来跨场景运行。我目前使用CSV Data Set Config拥有一组数据,其中包含用户电子邮件和密码的登录凭据,例如:
email1@email.com,password1
email2@email.com,password2
接下来,我向登录服务发送HTTP POST request,该服务生成一个accessToken。然后,我使用JSON Extractor来获取生成的accessToken。之后,我使用BeanShell Assertion存储accessToken属性/变量。
我的问题似乎就在这最后一步,因为它只会存储最后生成的变量,而不是每个生成的accessTokens。我希望能够存储/覆盖每个电子邮件密码组合的抓取的accessToken。我希望它像这样修改/填充CSV文件:
email1@email.com,password1,accessToken1
email2@email.com,password2,accessToken2
我也尝试使用Pre Processor > User Parameters
Screen shot of User Parameters
我想在测试中同时更新/覆盖“ userBearerToken”变量,但是我找不到解决办法,或者即使目前可以这样做。
我发现很难说出我要问的内容,但基本上我想存储多个动态生成的变量(更改并超时的accessTokens)并将其用于其他测试。我不在乎哪个组件(CSV或用户参数)可以处理此问题,但是我需要能够将这些变量及其相应的电子邮件密码凭据存储起来。
答案 0 :(得分:0)
如果要将accessToken
值存储到JMeter属性中以便在其他Thread Group中使用,请注意,该属性对于整个JVM都是全局的,并且一直保留到重新启动JMeter为止。定义单个accessToken
属性-每个JMeter线程(或迭代)将覆盖该值。
解决方案是使用当前线程(或迭代)号作为前缀或后缀,这可以使用__${__threadNum} function或相关的JMeter变量来完成,具体取决于迭代的定义方式或两者。
示例设置:
${__setProperty(access_token_${__threadNum},bar,)}
${__P(access_token_${__threadNum},)}
演示:
如果您想将值保存到写入当前文件的文件中,则不是最好的主意,因为race condition的形式会导致文件格式错误(很可能会)。因此,我建议改为使用Sample Variables属性。
如果将下一行添加到 user.properties 文件:
sample_variables =电子邮件,密码,accessToken
JMeter会将名为${email}
,${password}
和${accessToken}
的变量及其值存储在.jtl结果文件中,该文件基本上是CSV文件,可以在其他任何地方重复使用。
但是,如果您只需要存储凭据和令牌,则可以使用Flexible File Writer插件并将其配置为将上述变量值保存到单独的文件中,相关配置将非常简单:
variable#0,variable#1,variable#2
安装Flexible File Writer插件。