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

JMeter读取旧版本的csv

廖弘伟
2023-03-14

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

我的JMeter文件中有下面的表单。

  • CSV 数据集配置 - 用户登录信息
  • 设置用户名、密码 - 每次迭代一个
  • 设置线程组
    • 豆壳采样器删除会话密钥.csv
    File file = new File("C:/user/sessionKeys.csv");
    if (file.exists() && file.isFile()) {
        file.delete();
    }
    
    • 登录线程-ThreadCount=ThreadCount,Loop=1
      • 登录请求
        • BeanShell PostPrecessor创建文件并将会话密钥附加到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 调用线程 - 线程计数 = 线程计数,循环 = html" target="_blank">循环
          • 获取数据请求

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

          我尝试过添加常量计时器或更改JMeter文件的结构,但没有任何效果。

共有2个答案

梁季
2023-03-14

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

在您的情况下,将会话密钥存储为JMeter属性可能更简单,这样就可以在所有线程组中访问它。您可以使用Groovy如< code>props.put("${sessionKey} ",sessionKey)或通过JMeter函数如< code > $ { _ _ set property(" session key ",${sessionKey})}来存储它。

然后,可以使用属性函数(如 ${__P(会话密钥,)} 再次访问该属性。

赵英哲
2023-03-14

看看JMeter测试元素的执行顺序

配置元素

预处理器

定时器

采样器

后处理器(除非SampleResult为空)

断言(除非SampleResult为空)

侦听器(除非SampleResult为空)

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

因此,如果您需要对CSV文件进行一些预处理,则需要在setUp Thread Group中进行

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

 类似资料:
  • 和用户余额相关的信息,余额单位都是按照 CNY 的「分」作为单位。 接口不给现实数字,而是给出以 CNY 的「分」单位的数字,并在「启动者」中提供了显示转换比例,单位为百分比(%) 钱包信息 钱包信息提供进入钱包页面所需的附加信息记录接口。 在未来开发中,一些信息可能会被移动到「启动者」中。 GET /wallet 响应 Status: 200 OK { "labels":[ // 充值选

  • 我遇到了一个挑战,我必须读取CSV文件并将其读取,直到定义的可变大小限制(BATCH_SIZE)。读取 CSV 中的行数后,将其发送到不同的 AWS API。由于我的CSV文件大小可以是1Gb到2Gb的任何地方,因此我避免使用JSR223 CSV文件读取。我想知道如何使用JMeter和CSV数据集配置来实现它。

  • 问题内容: 安装新的构建机器后,我发现它带有标准C ++库的6.0.10 但是,我们的许多目标计算机仍使用旧版本的libstdc ++,例如: 显然,在最后两个0.0.1中,ABI发生了变化,因为尝试运行程序会导致 我尝试明确安装旧版本的gcc,但没有帮助。升级目标计算机是我无法控制的,因此不是一种选择。使我的构建在具有较旧libstdc ++的计算机上工作的最佳方法是什么? 我在apt-cach

  • 问题内容: 我通过终端更新 sklearn 版本 如果我列出 但是如果我在笔记本上运行 结果是 如何解决和更新Jupyter Notebook中的版本? 问题答案: 要更新Jupyter使用的版本,您需要通过Jupiter界面打开终端 并从这里运行命令 错误是使用系统终端。

  • 当我执行phpInfo时。我的Linux(fedora)上的php脚本 它给出了PHP版本5.5 而当我使用我的Apache服务器(通过浏览器)到达它时,它给了我旧的PHP 5.3版本。 发现Apache正在使用一些库(LoadMoulesphp5_module模块/libphp5.so)-在php.conf.中找到它 有人能帮助如何更改Apache正在使用的版本吗? 或者还有其他方法迫使Apac

  • 问题内容: Cloundfoundry最近将其Java buildpack更新到2.5版(包括Java 8和tomcat 8)。我仍想使用2.4版,因为我的应用尚未升级到Java 8。这样做最简单的方法是什么? 我可以使用 但是如何指定使用版本2.4(https://github.com/cloudfoundry/java- buildpack/releases/tag/v2.4 )?显然,指定标