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

时间:2018-06-15 10:33:17

标签: jmeter

  1. 我正在使用多个并发用户执行登录测试。
    1. 我创建了一个JDBC请求来获取患者的用户名和密码 表。然后在帮助下使用相同的数据创建 Test.CSV 文件 BeanShell断言。
    2. 现在,在CSV数据集配置 Test.csv 中传递此文件名。
    3. 我可以同时登录多个用户,但遇到问题: 当我第一次运行测试时。该文件在同一位置不可用,因为它是在执行线程组后创建的。 如果文件不存在,我会在日志中得到这个:文件Test.csv必须存在且可读
  2. 要执行相同的过程,我正在做的是,保持JDBC请求是不同的测试计划。首先执行该测试计划,然后继续登录。

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

2 个答案:

答案 0 :(得分:0)

Jmeter执行顺序是: -

0-配置元素

1-预处理器

2 - 定时器

3-取样

4-Post-Processors(除非SampleResult为空)

5-Assertions(除非SampleResult为null)

6-Listeners(除非SampleResult为null)

基于以上所述,很明显" csv数据配置"将在JDBC采样器之前首先执行。

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

Apache Groovy - Why and How You Should Use It

希望它有所帮助。

答案 1 :(得分:0)

原因是CSV数据集配置是Configuration Element,根据测试元素Execution Order,它在其他任何事情之前被初始化。

我建议使用__CSVRead()函数,JMeter函数在它们被调用时进行评估,这样Test.csv文件将在您从中获取凭据时存在。请参阅Apache JMeter Functions - An Introduction以熟悉JMeter Functions概念。

另请注意,根据Beanshell的JMeter最佳实践it is recommended to switch to JSR223 Test Elements或其他脚本语言。