我们可以使用Jmeter使用类似javascript的代码断言API响应吗

我们可以使用Jmeter使用类似javascript的代码断言API响应吗,jmeter,jmeter-plugins,Jmeter,Jmeter Plugins,我试图探索Jmeter的API测试 我能够使用Jmeter的响应断言添加断言 但我喜欢Jmeter中的一个平台,在这里我们可以编写代码来断言在API上测试API的更复杂场景 与我们可以说的类似,我们在SOAP-UI中使用groovy脚本,或者在使用Newman节点模块的postman测试中使用javascript 在Jmeter中可能吗 是否有任何插件可用于在Jmeter中实现相同的功能 我试图找到任何教程或博客关于相同的土地,但没有成功 如果有人尝试过,请分享您的经验、方法、博客或教程,这些可

我试图探索Jmeter的API测试

我能够使用Jmeter的响应断言添加断言

但我喜欢Jmeter中的一个平台,在这里我们可以编写代码来断言在API上测试API的更复杂场景

与我们可以说的类似,我们在SOAP-UI中使用groovy脚本,或者在使用Newman节点模块的postman测试中使用javascript

在Jmeter中可能吗

是否有任何插件可用于在Jmeter中实现相同的功能

我试图找到任何教程或博客关于相同的土地,但没有成功

如果有人尝试过,请分享您的经验、方法、博客或教程,这些可以引导我在Jmeter中实现同样的目标,这将非常有帮助


任何解决方法都将是有帮助的,并提前感谢

当然,您可以执行Javascript(在服务器端)来断言API响应

您只需将其作为断言添加到请求中,并选择语言为
javascript
,然后通过选中
prev
编写断言代码,这是一个

下面是一个演示,它使用javascript获取字符串
成功
的响应搜索,并记录字符串中的第一个位置:

var response = prev.getResponseDataAsString();
var pos = response.search("success");
log.info(pos);

当然,您可以执行Javascript(在服务器端)来断言API响应

您只需将其作为断言添加到请求中,并选择语言为
javascript
,然后通过选中
prev
编写断言代码,这是一个

下面是一个演示,它使用javascript获取字符串
成功
的响应搜索,并记录字符串中的第一个位置:

var response = prev.getResponseDataAsString();
var pos = response.search("success");
log.info(pos);

继续user7294900回答,您可以在JSR223断言中编写如下代码:

JAVASCRIPT

var responseBody = prev.getResponseDataAsString();
log.info(responseBody)
log.info(responseBody.code)

var jsonData = JSON.parse(responseBody);
log.info("my name from response = "+jsonData.name)
我发现Jmeter具有Assert的内置函数,即AssertionResult

Groovy

使用以下代码:

import groovy.json.JsonSlurper;

def failureMessage = "";
def jsonResponse = null;

JsonSlurper JSON = new JsonSlurper ();

try {
    jsonResponse = JSON.parseText(prev.getResponseDataAsString());
    } catch (Exception e) {
    failureMessage += "Invalid JSON.\n"
}

log.info("***********Starting Assert************")
log.info("******************************************************")
log.info("my name ="+jsonResponse.name)

if(!"201".equals(prev.getResponseCode())){
    failureMessage += "Expected <response code> [201] but we got instead [" + prev.getResponseCode() + "]\n\n" ;
}

if(!"morpheus".equals(jsonResponse.name)){
    failureMessage += "Expected name is morpheus but we got instead [" + jsonResponse.name + "]\n\n" ;
    log.info("asset fail")
}

if(!"morpheus2".equals(jsonResponse.name)){
    failureMessage += "Expected name is morpheus2 but we got instead  [" + jsonResponse.name + "]\n\n" ;
    log.info("asset fail")
}

if(!"leader".equals(jsonResponse.job)){
    failureMessage += "Expected job is leader but we got instead [" + jsonResponse.job + "]\n\n" ;
    log.info("asset fail")
}

if(!"leader1".equals(jsonResponse.job)){
    failureMessage += "Expected job is leader1 but we got instead [" + jsonResponse.job + "]\n\n" ;
    log.info("asset fail")
}

// Print error messages if any
if (failureMessage?.trim()) {
    failureMessage += "URL: " + SampleResult.getURL() + "\n\n";     
    failureMessage += "JSON RESPONSE: " + jsonResponse + "\n\n";
    failureMessage += "REQUEST HEADERS: " + SampleResult.getRequestHeaders() + "\n\n";

    AssertionResult.setFailureMessage(failureMessage);
    AssertionResult.setFailure(true);    
}
import groovy.json.JsonSlurper;
def failureMessage=“”;
def jsonResponse=null;
JsonSlurper JSON=newjsonslurper();
试一试{
jsonResponse=JSON.parseText(prev.getResponseDataAsString());
}捕获(例外e){
failureMessage+=“无效的JSON。\n”
}
log.info(“**********开始断言****************”)
日志信息(“**********************************************************************************”)
log.info(“我的名字=”+jsonResponse.name)
如果(!“201”.equals(prev.getResponseCode())){
failureMessage+=“应为[201],但我们得到的是[“+prev.getResponseCode()+”]\n\n”;
}
if(!“morpheus.equals(jsonResponse.name)){
failureMessage+=“预期名称为morpheus,但我们得到的是[“+jsonResponse.name+”]\n\n”;
log.info(“资产失败”)
}
if(!“morpheus2”.equals(jsonResponse.name)){
failureMessage+=“预期名称为morpheus2,但我们得到的是[“+jsonResponse.name+”]\n\n”;
log.info(“资产失败”)
}
if(!“leader”.equals(jsonResponse.job)){
failureMessage+=“预期的作业是leader,但我们得到的是[“+jsonResponse.job+”]\n\n”;
log.info(“资产失败”)
}
if(!“leader1”.equals(jsonResponse.job)){
failureMessage+=“预期的作业是leader1,但我们得到的是[“+jsonResponse.job+”]\n\n”;
log.info(“资产失败”)
}
//打印错误消息(如果有)
如果(故障信息?.trim()){
failureMessage+=“URL:”+SampleResult.getURL()+“\n\n”;
failureMessage+=“JSON响应:”+jsonResponse+“\n\n”;
failureMessage+=“请求标头:”+SampleResult.getRequestHeaders()+“\n\n”;
AssertionResult.setFailureMessage(failureMessage);
AssertionResult.setFailure(true);
}
资料来源:


继续用户7294900答案,您可以在JSR223断言中编写如下代码:

JAVASCRIPT

var responseBody = prev.getResponseDataAsString();
log.info(responseBody)
log.info(responseBody.code)

var jsonData = JSON.parse(responseBody);
log.info("my name from response = "+jsonData.name)
我发现Jmeter具有Assert的内置函数,即AssertionResult

Groovy

使用以下代码:

import groovy.json.JsonSlurper;

def failureMessage = "";
def jsonResponse = null;

JsonSlurper JSON = new JsonSlurper ();

try {
    jsonResponse = JSON.parseText(prev.getResponseDataAsString());
    } catch (Exception e) {
    failureMessage += "Invalid JSON.\n"
}

log.info("***********Starting Assert************")
log.info("******************************************************")
log.info("my name ="+jsonResponse.name)

if(!"201".equals(prev.getResponseCode())){
    failureMessage += "Expected <response code> [201] but we got instead [" + prev.getResponseCode() + "]\n\n" ;
}

if(!"morpheus".equals(jsonResponse.name)){
    failureMessage += "Expected name is morpheus but we got instead [" + jsonResponse.name + "]\n\n" ;
    log.info("asset fail")
}

if(!"morpheus2".equals(jsonResponse.name)){
    failureMessage += "Expected name is morpheus2 but we got instead  [" + jsonResponse.name + "]\n\n" ;
    log.info("asset fail")
}

if(!"leader".equals(jsonResponse.job)){
    failureMessage += "Expected job is leader but we got instead [" + jsonResponse.job + "]\n\n" ;
    log.info("asset fail")
}

if(!"leader1".equals(jsonResponse.job)){
    failureMessage += "Expected job is leader1 but we got instead [" + jsonResponse.job + "]\n\n" ;
    log.info("asset fail")
}

// Print error messages if any
if (failureMessage?.trim()) {
    failureMessage += "URL: " + SampleResult.getURL() + "\n\n";     
    failureMessage += "JSON RESPONSE: " + jsonResponse + "\n\n";
    failureMessage += "REQUEST HEADERS: " + SampleResult.getRequestHeaders() + "\n\n";

    AssertionResult.setFailureMessage(failureMessage);
    AssertionResult.setFailure(true);    
}
import groovy.json.JsonSlurper;
def failureMessage=“”;
def jsonResponse=null;
JsonSlurper JSON=newjsonslurper();
试一试{
jsonResponse=JSON.parseText(prev.getResponseDataAsString());
}捕获(例外e){
failureMessage+=“无效的JSON。\n”
}
log.info(“**********开始断言****************”)
日志信息(“**********************************************************************************”)
log.info(“我的名字=”+jsonResponse.name)
如果(!“201”.equals(prev.getResponseCode())){
failureMessage+=“应为[201],但我们得到的是[“+prev.getResponseCode()+”]\n\n”;
}
if(!“morpheus.equals(jsonResponse.name)){
failureMessage+=“预期名称为morpheus,但我们得到的是[“+jsonResponse.name+”]\n\n”;
log.info(“资产失败”)
}
if(!“morpheus2”.equals(jsonResponse.name)){
failureMessage+=“预期名称为morpheus2,但我们得到的是[“+jsonResponse.name+”]\n\n”;
log.info(“资产失败”)
}
if(!“leader”.equals(jsonResponse.job)){
failureMessage+=“预期的作业是leader,但我们得到的是[“+jsonResponse.job+”]\n\n”;
log.info(“资产失败”)
}
if(!“leader1”.equals(jsonResponse.job)){
failureMessage+=“预期的作业是leader1,但我们得到的是[“+jsonResponse.job+”]\n\n”;
log.info(“资产失败”)
}
//打印错误消息(如果有)
如果(故障信息?.trim()){
failureMessage+=“URL:”+SampleResult.getURL()+“\n\n”;
failureMessage+=“JSON响应:”+jsonResponse+“\n\n”;
failureMessage+=“请求标头:”+SampleResult.getRequestHeaders()+“\n\n”;
AssertionResult.setFailureMessage(failureMessage);
AssertionResult.setFailure(true);
}
资料来源:

选项包括:

  • 您可以在其中使用查询来测试响应
  • 如果您需要更高级的逻辑,可以使用Java和Groovy语言。Groovy有这样的功能,因此您可以应用任何自定义逻辑。更多信息:
  • 选项包括:

  • 您可以在其中使用查询来测试响应
  • 如果您需要更高级的逻辑,可以使用Java和Groovy语言。Gr