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

CSV数据集在JDBC采样器请求之前被执行

李博达
2023-03-14
    < li >我正在对多个并发用户执行登录测试。 < ol start="2 " > < li >我创建了一个JDBC请求,以从患者表中获取用户名和密码。然后创建了一个测试。借助BeanShell断言使用相同数据的CSV文件。 < li >现在在CSV数据集configTest.csv中传递此文件名。 < li >我可以同时登录多个用户,但面临一个问题:当我第一次运行测试时。该文件在同一位置不可用,因为它是在执行线程组后创建的。如果文件不存在,我会在日志中得到这个消息:文件Test.csv必须存在并且可读。

为了执行相同的进程,我所做的是,保持JDBC请求是不同的测试计划。首先执行测试计划,然后继续登录。

我想执行并保持两个请求是相同的测试计划。还有一件事,如果我在同一个测试计划中为这些请求使用不同的线程组,仍然面临相同的问题。

共有2个答案

郎睿
2023-03-14

原因是CSV数据集配置是一个配置元素,根据测试元素执行顺序,它在任何其他操作之前都是初始化的。

我建议使用__CSVRead()函数,JMeter函数在调用它们时被评估,因此Test.csv文件将在您从中获取凭据时存在。请参阅阿帕奇JMeter函数 - 简介以熟悉JMeter函数概念。

另请注意,根据JMeter最佳实践,建议从豆壳或其他脚本语言切换到JSR223测试元素。

羿昊英
2023-03-14

Jmeter执行顺序为:-

0-配置元素

1-预处理器

2定时器

3-采样器

4 后处理器(除非样本结果为空)

5-断言(除非SampleResult为空)

6个监听器(除非SampleResult为空)

基于以上,很明显,“csv-data-config”将在JDBC采样器之前首先执行。

我能想到的是,如果你想在同一个线程组中获取用户名/pwd,那么你可以使用__setProperty()将用户名和密码设置为属性,并使用__property()获取它。为此,在JDBC之后使用JSR223 Post Process。你也可以使用任何其他知道后处理器/脚本语言,它只是用于性能测试更好。

阿帕奇时髦 - 为什么以及你应该如何使用它

希望有帮助。

 类似资料:
  • 我在jmeter中有一个测试计划,只有很少的SOAP采样器,我在那里追加请求体计数器值,我正在寻找如何在每个采样器请求之前增加计数器值的方法。 在下面的设置中,jmeter按以下顺序执行请求: 我想实现这样的行为: 计数器起始值:1增量:1最大值:2 我该怎么做呢?我想我应该引入循环控制器?

  • 但是根据目前的需求,我们需要从mongodb中获取数据,将这些动态值传递给HTTP请求采样器,我的意思是我们需要根据数据库中的动态值构建HTTP请求采样器? 你能不能请谁帮我一下。

  • 我正在使用jmeter,我对它非常陌生,并且有最低的编程背景。我目前使用2个采样器:a)soap请求b)soap xml rpc请求。 通过使用soap请求采样器,我可以轻松地加载wsdl文件并继续测试。由于EndpointDispatcher中的ContractFilter不匹配,接收方无法处理带有Action“”的消息。这可能是由于合同不匹配(发送方和接收方之间的操作不匹配)或发送方和接收方之

  • 我有网站的静态域名(test.com)和CSV文件路径到不同的页面,如home.html、contacts.html、projects.html和其他。我必须如何配置Jmeter从文件接收数据作为变量到“路径”到“HTTP请求”采样器?

  • 测试结构: Thread1-Sampler1(例如:访问登录表单) 我试着把计时器当作取样器,不管是父母还是孩子。也许我错过了什么,因为没有一个计时器在为我工作。 我已经找到了类似的问题解决方案,但没有一个对我有用:JMeter——在多个线程组之间共享请求之间的延迟Ultimate thread Group中每个线程的延迟

  • 我想知道,如何在groovy脚本中对a做出反应。我正在使用While控制器迭代CSV中的所有行,并在实际测试计划之前生成JMeter变量。对于不同的CSV文件,我需要多次执行此操作,因此我不想在While控制器中停止线程。 我想象了这样的事情: CSV_VALUE1是JMeter变量的值,CSV_VALUE2是变量的名称。 测试计划 我也很欣赏更好的解决方案,它遍历CSV文件的每一行,并根据我的约