【发布时间】:2018-09-19 14:25:11
【问题描述】:
我正在尝试使用 Groovy 脚本使用 CSV 数据创建一个 json,并在 jmeter 的请求正文中传递相同的内容,但我无法创建数据:
CSV Created:
0.0.0.0,255.255.255.255
10.0.0.1,255.0.0.0
10.0.0.2,255.0.0.1
Request body needed as :
{"Rule":{"__type":"AndroidSamsungDeviceRelocationRule","RuleId":0,"Name":"Test","DeviceFamily":6,"Targets":{"Groups":[{"Id":"0000000007.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000"}],"Devices":[]},"Priority":0,"IsEnabled":true,"StartDate":"/Date(1536856632768)/","EndDate":null,"Mappings":[{"RelocationTarget":{"Id":"0000000007.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000","Name":"100MB","Path":"\\\\100MB\\","PathVisible":"\\\\100MB\\"},"IPRange":[{"From":"0.0.0.0","To":"255.255.255.255"}...]}],"EnrollmentCertificateId":null,"EnrollmentCertificateName":""}}
需要在单个请求中的 csv 中的参数 from 和 to 的 IP 地址。
我试过的代码是:
@Grab('com.xlson.groovycsv:groovycsv:1.3')
import static com.xlson.groovycsv.CsvParser.parseCsv
fh = new File('examples/data/process_csv_file.csv')
def csv_content = fh.getText('utf-8')
def data_iterator = parseCsv(csv_content, separator: ';', readFirstLine: true)
for (line in data_iterator) {
sum = line[0] as String
destination = line[1] as String
}
def builder = new groovy.json.JsonBuilder()
builder({
Rule:{
__type:"AndroidSamsungDeviceRelocationRule",
RuleId:0,
Name:"Test",
DeviceFamily:6,
Targets:{
Groups:[
{
Id:"0000000007.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000"
}
],
Devices:[
]
},
Priority:0,
IsEnabled:true,
StartDate:"/Date(1536856632768)/",
EndDate:null,
Mappings:[
{
RelocationTarget:{
Id:"0000000007.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000.0000000000",
Name:"100MB",
Path:"\\\\100MB\\",
PathVisible:"\\\\100MB\\"
},
IPRange:[
{
"From":"sum",
"To":"destination"
}
]
}
],
EnrollmentCertificateId:null,
EnrollmentCertificateName:""
}
})
sampler.getArguments().removeAllArguments()
sampler.addNonEncodedArgument('',builder.toPrettyString(),'')
sampler.setPostBodyRaw(true);
当我通过 JSR223 预处理器运行此程序时,我收到带有错误 HTTP 400 的空白请求。
我需要为 CSV 中可用的 IP 数量创建一个动态 IPRange 循环
【问题讨论】: