我尝试使用以下代码检查HTTP Request
的响应,该响应由Thread Group
从另一个Module Controller
调用。
File myfile = new File(FileServer.resolveBaseRelativeName("results/" + filen + "-report.xml"));
if(${__isVarDefined(vars.get("myvar"))} == true){
FileUtils.writeByteArrayToFile(myfile,bytes);
} else {
FileUtils.writeStringToFile(myfile, prev.getResponseDataAsString(), "UTF-8");
}
空xml
是在myvar
变量为空时创建的,它不包含请求的响应数据。
答案 0 :(得分:1)
在两种情况下,您都可以使用getResponseData()(和删除的函数调用)写入byte []
1: const f = <K>(k: K) => <V>(v: V) => (array: Array<{ [k]: K, [v]: V }>) =>
^ Cannot use `K` as a type because `K` is a value. To get the type of a value use `typeof`
答案 1 :(得分:1)
由于JMeter变量在线程本地,因此不能使用vars
速记来从其他线程组中检索值,因此无法从另一个线程组访问它们。您需要改用props
。参见documentation:
属性与变量不同。变量是线程本地的;属性是所有线程共有的,需要使用__P或__property函数进行引用。
Don't inline JMeter Functions or Variables in Groovy scripts,如果您需要检查变量是否已定义-尝试获取它,看看它是否为null
:
if (vars.get('myvar') != null) {
//the code will be executed if the var is defined
}
查看The Groovy Templates Cheat Sheet for JMeter for more details的Transferring Data and Objects (like List, Maps, Array etc.) Between Samplers and Threads
一章。
在绝大多数情况下,使用Inter-Thread Communication Plugin
更容易