Javascript 使用BeanShell预处理器发送JSON对象时出现问题
我想使用BeanShell预处理器将一个JSON对象发送到JMeter中的HTTP请求体。为了对JSON对象建模,我使用java代码(带有一些业务逻辑)。因此,我创建了一个BeanShell预处理器,并编写了如下java代码:Javascript 使用BeanShell预处理器发送JSON对象时出现问题,javascript,json,performance,jmeter,jmeter-plugins,Javascript,Json,Performance,Jmeter,Jmeter Plugins,我想使用BeanShell预处理器将一个JSON对象发送到JMeter中的HTTP请求体。为了对JSON对象建模,我使用java代码(带有一些业务逻辑)。因此,我创建了一个BeanShell预处理器,并编写了如下java代码: import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; String key="testKey"; int lastID=5548;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
String key="testKey";
int lastID=5548;
int totalCount=198;
JSONObject obj1 = new JSONObject();
JSONArray obj2 = new JSONArray();
for (int i=1;i<=totalCount;i++)
{
JSONObject item = new JSONObject();
item.put("taskId", Integer.toString(lastID+i));
item.put("taskOrder",1);
item.put("snapshotTemplateKey",key);
obj2.put(item);
obj1.put("changeControlTasks", obj2);
obj1.put("ccName","Eleven" );
obj1.put("snapshotTemplateKey",key);
}
log.info(obj1);
vars.putObject("jsonData",obj1);
${jsonData}
使用上面的代码,它抛出下面的共享错误
请求:
POST data:
${jsonData}
日志中的错误:
2017/08/06 07:27:10 ERROR - jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval
Sourced file: inline evaluation of: ``import org.json.JSONArray; import org.json.JSONException;
import org.json.JSONOb . . . '' : Error in method invocation: Method info( ) not found in class'org.apache.log.Logger'
任何人都可以建议上面的代码有什么问题,以及如何解决相同的问题
如有任何建议或解决方案,我们将不胜感激。obj2保留数据。使用
obj2
代替obj1
:
vars.putObject("jsonData",obj2);
用于日志转换转置
log.info(obj1.toString());
log.info(obj1);
因为您将无法将JSON对象打印到日志中,当你用高线程数运行测试时,这个函数将成为瓶颈,你应该考虑切换到语言。此外,还可以编译和缓存性能良好的Groovy脚本。替换Groovy代码类似于:
import groovy.json.JsonBuilder
def key = 'testKey'
def lastID = 5548
def totalCount = 198
JsonBuilder builder = new JsonBuilder()
def array = []
1.upto(totalCount, {
def taskId = (lastID + "${it}".toInteger())
array << [getKey: { key }, getTaskId: { taskId }, getTaskOrder: { 1 }]
})
builder(
{
changeControlTasks array.collect() {
[
"snapshotTemplateKey": it.getKey(),
"taskId" : it.getTaskId(),
"taskOrder" : it.getTaskOrder()
]
}
snapshotTemplateKey "testKey"
ccName "Eleven"
}
)
vars.put('jsonData', builder.toPrettyString())
import groovy.json.JsonBuilder
def key='testKey'
def lastID=5548
def总计数=198
JsonBuilder=新的JsonBuilder()
def数组=[]
1.最多(总数){
def taskId=(lastID+“${it}”.toInteger())
array尝试了您的建议,但仍然面临相同的问题回答日志问题