JMeter读取旧版本的csv



我正在尝试测试一些api,但首先我需要获得我在测试中使用的每个客户的会话密钥。我有一个CSV文件与客户登录信息,并读取它与每个线程。

在我的JMeter文件中有以下表单:

  • CSV数据集配置-用户登录信息
  • 设置用户名,密码-每次迭代一个
  • 设置线程组
    • BeanShell Sampler删除sessionKeys.csv
File file = new File("C:/user/sessionKeys.csv");
if (file.exists() && file.isFile()) {
file.delete();
}
  • 登录线程-ThreadCount = threadCount, Loop = 1
    • 登录请求
      • BeanShell postprecesser创建文件并附加会话密钥到sessionKeys.csv
if("${sessionKey}" != "not_found")
{
File file = new File("C:/user/sessionKeys.csv");
FileWriter fWriter = new FileWriter(file, true);
BufferedWriter buff = new BufferedWriter(fWriter);


buff.write("${sessionKey}n");

buff.close();
fWriter.close();
}
  • CSV数据集配置-会话密钥
  • API调用线程-ThreadCount = threadCount, Loop = loop<<ul>
  • GetData请求/gh>

我注意到,即使文件实际上被删除,创建并填充了新的sessionKeys,首先几个请求使用旧的sessionKeys在文件被删除之前。

我试过添加常量计时器或改变JMeter文件的结构,但没有任何作用。

查看JMeter测试元素执行顺序

  1. 配置元素

  2. 预处理器

  3. 计时器

  4. 取样器

  5. 后置处理器(除非SampleResult为null)

  6. 断言(除非SampleResult为null)

  7. 监听器(除非SampleResult为null)

CSV数据集配置是一个配置元素,因此它在Beanshell采样器之前执行了很长时间,这完美地解释了你所面临的行为。

如果你需要对CSV文件进行一些预处理你需要在setUp Thread Group

中进行还要注意,从JMeter 3.1开始,您应该使用JSR223测试元素和Groovy语言编写脚本,因此考虑迁移是有意义的。

看起来您的测试计划中的CSV Config元素存在于线程组之外,因此在文件被删除和重新创建之前将首先被调用。

在您的情况下,将会话键存储为JMeter属性可能更简单,以便可以在所有线程组中访问它。您可以使用Groovy(如props.put("${sessionKey}", sessionKey))或通过JMeter函数(如${__setProperty("sessionKey",${sessionKey})})来存储它。

可以使用属性函数(如${__P(sessionKey,)})再次访问该属性。

相关内容

  • 没有找到相关文章

最新更新