- 我正在对多个并发用户进行登录测试。
- 我创建了一个 JDBC 请求来获取患者的用户名和密码 桌子。.CSV然后在 BeanShell 断言。
- 现在在 CSV 数据集配置测试.csv中传递此文件名。
- 我可以同时与多个用户登录,但遇到一个问题: 当我第一次运行测试时。该文件在同一位置不可用,因为它是在执行线程组之后创建的。 如果文件不存在,我将在日志中得到这个:文件测试.csv必须存在且可读。
为了执行相同的过程,我正在做的是,保留JDBC请求是不同的测试计划。首先执行该测试计划,然后继续登录。
我想执行并保持两个请求是相同的测试计划。 还有一件事如果我在同一测试计划中对这些请求使用不同的线程组,仍然面临相同的问题。
Jmeter 执行顺序为:-
0-配置元素
1-预处理器
2 个定时器
3-采样器
4 后处理器(除非样本结果为空(
5 断言(除非样本结果为空(
6 个侦听器(除非样本结果为空(
基于上述,很明显,"csv 数据配置"将在 JDBC 采样器之前首先执行。
我能想到的是,如果您想在同一线程组中获取用户名/pwd,那么您可以使用 __setProperty(( 将用户名和密码设置为属性并使用 __property(( 获取它。为此,请在 JDBC 之后使用 JSR223 Post Process。 您也可以使用任何其他已知的后处理器/脚本语言,它只是 groovy 更适合性能测试。
Apache Groovy - 为什么以及如何使用它
希望对您有所帮助。
原因是CSV数据集配置是一个配置元素,根据测试元素的执行顺序,它先于其他任何东西进行初始化。
我建议改用 __CSVRead(( 函数,JMeter 函数在调用它们时进行评估,因此 Test.csv 文件在您从中获取凭据时将存在。请参阅 Apache JMeter Functions - 简介以熟悉 JMeter Functions 概念。
另请注意,根据JMeter最佳实践,建议从Beanshell或其他脚本语言切换到JSR223测试元素。