meterSphere(四)接口自动化,测试场景自定义变量
作者:互联网
需求
同一个接口,要输入不同的测试数据,可以用测试场景中的自定义变量来进行参数化
自定义变量类型
常量
-
定义
1)变量名:变量名称,后续调用直接 ${变量名} 调用2)值:变量值,可以使用Jmeter的内置函数
-
调用
直接使用 ${变量名} 调用 -
举个例子
新增一个常量,变量名为 test_constant ,报文中可以用 ${test_constant} 调用
列表
定义
- 变量名:列表的变量名称
- 值:多个枚举值之间用英文逗号分隔
调用
- foreach循环中,直接使用 for i in 变量名,i会依次取得列表中的值;
- 可以直接用 ${变量名_n}的形式,取得对应的值,n为值在列表中的位置,从1开始
举个例子
列表定义变量名为 test_list,变量值为 cat,dog,rabbit
-
ForEach循环
直接for value in test_list, value会依次取得列表中的值,即cat,dog,rabbit
运行之后,这个用例会执行三次,
请求的报文依次为:
{"test_list":"cat"} {"test_list":"dog"} {"test_list":"rabbit"}
-
获取列表中指定位置的值
指定位置从1开始
比如,要获取dog,那么变量直接写成${test_list_2}
CSV
定义
-
变量名:CSV文件的变量名似乎并没有什么实际的用途,因为调用的时候是不需要用到这个变量名的
-
配置:上传的一个CSV文件,CSV文件首行就是列名,后续直接使用 ${列名}调用变量
-
Encoding:文件编码,可不填
-
分隔符:默认逗号,一般不改
-
是否允许带引号 : 默认False
调用
在循环计数器中调用,直接使用 ${列名}调用
举个例子
-
新建CSV文件
-
接口场景中,添加一个循环控制器,
-
变量用 ${列名} 调用,接口请求报文如下:
{
"facilityCode": "${header_facilityCode}",
"companyCode": "${header_companyCode}",
"clientCode": "${header_clientCode}",
"sourcePlatformCode": "${header_sourcePlatformCode}"
}
- 循环三次,每次依次取得CSV中中每一行的值,接口请求报文如下:
{
"facilityCode": "basic_facility_01",
"companyCode": "basic_company_01",
"clientCode": "OFS",
"sourcePlatformCode": "OFS"
}
// 这个地方有个小问题,我本来是想模拟 "facilityCode":null , 但是貌似使用csv实现不了,还是会变成字符串
{
"facilityCode": "null",
"companyCode": "basic_company_01",
"clientCode": "OFS",
"sourcePlatformCode": "OFS"
}
// csv中不填,报文就会自动识别成空字符串""
{
"facilityCode": "",
"companyCode": "basic_company_01",
"clientCode": "OFS",
"sourcePlatformCode": "OFS"
}
计数器
定义
-
变量名:变量的名称,后续调用用 ${变量名} 调用
-
开始:起始值,包含这个值
-
结束:结束值,包含这个值
-
增量:即步长
-
输出格式:就是格式化,比如,原本准备输出值 1,输出格式定义为 000,则输出的值变成 001
调用
一般在循环计数器中使用,使用 ${变量名} 即可调用,每次循环,循环计数器的值会自动化加一
举个例子
- 新建一个循环计数器
- 循环计数器从1到4,如果循环次数超过循环计数器,则从头再次开始
- 总共循环5次,每次循环的报文如下:
{"test_count":"001"}
{"test_count":"002"}
{"test_count":"003"}
{"test_count":"004"}
{"test_count":"001"}
随机数
定义
-
变量名:变量的名称,使用 ${变量名} 调用
-
最小值:随机的最小值
-
最大值:随机的最大值
-
输出格式:就是格式化,比如,原本准备输出值 1,输出格式定义为 000,则输出的值变成 001
调用
直接使用 ${变量名} 调用即可
举个例子
- 新建一个随机数的场景变量 test_random ,随机数最小为0,最大为10
-
添加一个循环计数器,请求报文中,直接用 ${test_random}调用
-
循环3次,每次取得一个随机数,每次请求的报文如下:
{"test_random":"6"} {"test_random":"0"} {"test_random":"1"}
总结
以上就是自定义变量的一些用法,但是目前实际测试接口用到的比较少,主要原因如下:
-
需要测试字段为null的场景,使用csv无法实现,或者说,目前我还没找到能够实现的方式;
-
接口不太规范,不同的测试数据请求接口,得到的结果报文都不太相同,特别是接口返回失败的时候,msg都不太一样,导致无法使用同一个断言进行判断
标签:调用,变量,自定义,报文,接口,循环,meterSphere,test,变量名 来源: https://www.cnblogs.com/ying1761/p/15668508.html