JMeter中的CSV数据文件设置(CSV Data Set Config)与BeanShell前置处理器(BeanShell PreProcessor)都是用于参数化测试,即使用不同的参数多次执行同一请求。但是,两者的实现方式不同:
CSV数据文件设置的实现方式:
- 定义CSV文件,包含多组测试数据。例如:
username,age
tom,20
jerry,30
- 添加CSV数据文件设置,选择CSV文件和变量名称。例如:
变量名称:username,age - 绑定变量名称到HTTP请求的参数上。例如:
username绑定到HTTP请求的username参数
age绑定到HTTP请求的age参数 - 每次执行HTTP请求时,JMeter会从CSV文件中读取一行数据,绑定到请求参数上,然后发送请求。
实现了通过CSV外部文件的数据驱动测试。
BeanShell前置处理器的实现方式:
- 添加BeanShell前置处理器,编写BeanShell脚本代码。例如:
username="tom";
age=20;
- 设置变量名称和值。例如:
变量名称:username
值:${username}
变量名称:age
值:${age}
- 绑定变量名称到HTTP请求的参数上。
username绑定到HTTP请求的username参数
age绑定到HTTP请求的age参数 - 每次执行BeanShell前置处理器时,会执行BeanShell代码,设置变量的值,然后将值绑定到请求上,发送请求。
实现了通过Java代码动态设置测试数据的目的。
简而言之:
- CSV数据文件设置通过CSV文件实现数据驱动
- BeanShell前置处理器通过Java代码动态设置数据
一个综合示例:
CSV文件:
username,age
tom,20
jerry,30
CSV数据集配置:
CSV文件路径:D:/test.csv
变量名称:username,age
BeanShell前置处理器:
代码: username="lucy";age=25;
变量:
名称:username,值:${username}
名称:age,值:${age}
数据绑定:
username绑定到HTTP Request的username
age绑定到HTTP Request的age
运行测试,会执行两次请求:
第一次请求参数为 username=tom,age=20
第二次请求参数为username=lucy,age=25