在dubbo接口請求時
有一些參數是列表格式,如學生id列表:
["001","002"]
有一些是列表中爲字典信息,如:
[{
"uid": "001",
"realName": "swqa1"
},{
"uid": "002",
"realName": "swqa2"
}]
在參數請求中需要構造這些數據呢?
如果是一樣的數據,服務端和數據庫會對數據進行緩存,需要請求不一樣對數據,那怎麼實現請求的列表格式,並且不同的線程間的數據是不一樣的呢?
beanshell處理
使用beanshell讀取csv文件多行數據,並組裝成列表格式
在 beanshell
中 使用 ${__CSVRead(.\cv.csv,next)};
獲取csv文件數據,然後循環將數據放進數組中
List aList = new ArrayList();
for (int i=0; i<2; i++) {
String a = "${__CSVRead(.\cv.csv,0)}";
aList.add(a);
}
vars.putObject("aList",aList);
當for循環時,__CSVRead每次讀取一樣的數據,如果按照如下這樣的方式時纔會往下一行讀取數據
List aList = new ArrayList();
String a = "${__CSVRead(.\cv.csv,0)}";
aList.add(a);
String b = "${__CSVRead(.\cv.csv,0)}";
aList.add(b);
vars.putObject("aList",aList);
並且這樣beanshell的處理方式,會對肉雞的性能造成一定的損耗
讀取csv列表數據
使用腳本將數據生成爲對應的list數據,並寫入到預先的csv文件中,直接讀取csv變量即可
LIST_LEN = 50
def parse_list(data_org):
"""
將數據處理爲列表
:return:
"""
data_w = []
for i in range(int(len(data_org)/LIST_LEN)):
data_list = []
for j in range(LIST_LEN):
data_list.append(data_org[i*LIST_LEN+j][0])
data_w.append([data_list])
return data_w
建議使用最後一種方式,事先生成列表數據,在壓測時直接讀取壓測的列表數據即可