您的位置:

JMeter CSV数据文件设置详解

一、CSV数据文件的作用及格式

CSV(Comma Separated Values)是一种以逗号为分隔符对数据进行存储的格式,适用于存储表格数据,易于阅读和编辑。在JMeter中,CSV数据文件可以为测试脚本提供多个输入值或者验证数据。例如登录场景,可以使用CSV文件来存储不同的账号密码数据,让测试脚本循环执行来验证多个账号的登录情况。

CSV文件可以使用Excel等工具进行编辑和创建,每列对应一个变量,每行代表一个数据集。在JMeter中,CSV数据文件可以通过以下格式进行定义:

变量1,变量2,变量3,变量4
值1.1,值1.2,值1.3,值1.4
值2.1,值2.2,值2.3,值2.4
值3.1,值3.2,值3.3,值3.4

其中第一行声明了CSV文件的变量名,后面的每一行都代表一个数据集,对应变量名的值通过逗号进行分隔。另外,如果CSV文件的第一行以“#”开头,那么这一行将被JMeter忽略。

二、使用CSV数据文件进行参数化

参数化是JMeter中非常常见的一种需求,它可以让测试脚本使用不同的输入值和验证数据。而CSV数据文件正好可以给我们提供这样的支持。

下面是使用CSV文件实现参数化的示例:

http://www.example.com/login.html
param1=${username}
param2=${password}

这个请求中,我们使用了${username}和${password}这两个变量,它们将会从CSV文件中读取对应的值。因此,我们需要在测试计划中添加一个CSV数据文件配置元件,并指定对应的文件路径。

假设我们的CSV文件的路径为“D:\test\login.csv”,文件中包含username和password这两个变量名,则在测试计划中添加一个CSV数据文件配置元件,路径设置为“D:\test\login.csv”,变量名称设置为“username,password”。在HTTP请求中设置参数如下:

http://www.example.com/login.html
param1=${username}
param2=${password}

JMeter会自动读取CSV文件,并将每行数据赋值给对应变量。每次请求时,JMeter会循环读取下一行数据,并将变量值替换到请求参数中。

三、使用CSV数据文件进行断言验证

除了参数化,CSV文件还可以用于为测试脚本提供验证数据。例如访问一个登录页面,需要验证页面中是否包含“Welcome”的文字,这个验证文字可能需要针对不同的用户进行验证。

下面是使用CSV文件实现断言验证的示例:

http://www.example.com/login.html
断言:包含关键字“Welcome”
期望值:${welcome}

这个请求中,我们使用了一个包含关键字的断言,其中期望值将会从CSV文件中读取。因此,我们需要在测试计划中添加一个CSV数据文件配置元件,并指定对应的文件路径。

假设我们的CSV文件的路径为“D:\test\validation.csv”,文件中包含welcome这个变量名,则在测试计划中添加一个CSV数据文件配置元件,路径设置为“D:\test\validation.csv”,变量名称设置为“welcome”。在HTTP请求中设置断言如下:

http://www.example.com/login.html
断言:包含关键字“Welcome”
期望值:${welcome}

每次执行请求时,JMeter会自动读取CSV文件,将期望值替换为文件中对应的值,并完成断言验证。

四、使用CSV数据文件实现循环控制

CSV文件还可以作为循环控制器的控制源,让测试脚本循环执行直到文件中的所有数据都被使用。

下面是使用CSV文件实现循环控制的示例:

循环控制:循环次数${__CSVRead(D:\test\loop.csv,0)}
http://www.example.com/${__CSVRead(D:\test\loop.csv,1)}.html

这个脚本中,循环控制器的循环次数将会从CSV文件中读取对应的值。因此,我们需要在测试计划中添加一个CSV数据文件配置元件,并指定对应的文件路径。

假设我们的CSV文件的路径为“D:\test\loop.csv”,文件中包含cycle和type这两个变量名,则在测试计划中添加一个CSV数据文件配置元件,路径设置为“D:\test\loop.csv”,变量名称设置为“cycle,type”。在循环控制器中设置循环次数如下:

循环控制:循环次数${__CSVRead(D:\test\loop.csv,0)}
http://www.example.com/${__CSVRead(D:\test\loop.csv,1)}.html

在每次循环执行时,JMeter会自动读取CSV文件,并将循环次数替换到循环控制器中,然后针对每一行数据执行对应的请求,完成数据循环操作。