当服务不可用时,如何在JMeter中测试http请求

当服务不可用时,如何在JMeter中测试http请求,http,testing,service,jmeter,request,Http,Testing,Service,Jmeter,Request,我正在尝试测试http请求,但服务不可用,有没有办法在JMeter中创建虚拟响应?其目的是测试实际发送的请求 但是,建议使用虚拟采样器,如果其他测试人员没有该插件,则他们将无法测试该插件。是否还有其他可以使用的采样器或内置工具?实际上,您最终可以使用JSR223采样器做任何您想做的事情 在Groovy中编写HTTP请求相当容易,因为HTTP客户端功能有效地嵌入到环境中,例如: def urlString = 'http://' + restHost + ':' + restPort + '/'

我正在尝试测试http请求,但服务不可用,有没有办法在JMeter中创建虚拟响应?其目的是测试实际发送的请求


但是,建议使用虚拟采样器,如果其他测试人员没有该插件,则他们将无法测试该插件。是否还有其他可以使用的采样器或内置工具?

实际上,您最终可以使用JSR223采样器做任何您想做的事情

在Groovy中编写HTTP请求相当容易,因为HTTP客户端功能有效地嵌入到环境中,例如:

def urlString = 'http://' + restHost + ':' + restPort + '/' + restPath + '?' + paramString.toString()
def url = urlString.toURL()
def response = url.getText()
就这么简单

然后,您可以捕获协议错误,并以您想要的任何方式响应-您已经从脚本获得了对对象的完全访问权限:

try {
   ...
} catch(IOException ioe) {
    SampleResult.setResponseCode("200")
    SampleResult.setResponseMessage("FAKE OK")
    SampleResult.setResponseData("My dummy response!", "UTF-8") 
    SampleResult.setSuccessful(true)
}
顺便说一句,我不确定我是否真正理解这样一个请求背后的原因


如果情况非常不幸,负责测试中的服务的团队拒绝如此糟糕地合作,我宁愿快速地对模拟服务进行测试,让测试保持纯粹、简单和通用。

实际上,您最终可以使用JSR223采样器做任何您想做的事情

在Groovy中编写HTTP请求相当容易,因为HTTP客户端功能有效地嵌入到环境中,例如:

def urlString = 'http://' + restHost + ':' + restPort + '/' + restPath + '?' + paramString.toString()
def url = urlString.toURL()
def response = url.getText()
就这么简单

然后,您可以捕获协议错误,并以您想要的任何方式响应-您已经从脚本获得了对对象的完全访问权限:

try {
   ...
} catch(IOException ioe) {
    SampleResult.setResponseCode("200")
    SampleResult.setResponseMessage("FAKE OK")
    SampleResult.setResponseData("My dummy response!", "UTF-8") 
    SampleResult.setSuccessful(true)
}
顺便说一句,我不确定我是否真正理解这样一个请求背后的原因


如果情况非常不幸,负责测试中的服务的团队拒绝如此糟糕地合作,我宁愿快速对模拟服务进行测试,并保持测试的纯净,简单且多功能。

不会发送请求,因为您需要在通过线路发送任何数据之前建立底层

如果您想测试服务器关闭的事实,您可以定义连接和响应超时,这些设置位于采样器的“高级”选项卡下(甚至更好)

上述配置将“告诉”JMeter尝试建立连接,如果1秒内没有响应,采样器将被标记为失败:

如果这是您期望的行为,您可以通过添加一个作为请求的子级并将其配置为如下方式,将JMeter配置为接受此响应:

  • 要测试的字段:
    响应代码
  • 模式匹配规则:
    等于
  • 要测试的模式:
    非HTTP响应代码:org.apache.HTTP.conn.ConnectTimeoutException
  • 勾选
    忽略状态

这样JMeter会将超时请求视为成功:


请求不会被发送,因为您需要在通过线路发送任何数据之前建立底层

如果您想测试服务器关闭的事实,您可以定义连接和响应超时,这些设置位于采样器的“高级”选项卡下(甚至更好)

上述配置将“告诉”JMeter尝试建立连接,如果1秒内没有响应,采样器将被标记为失败:

如果这是您期望的行为,您可以通过添加一个作为请求的子级并将其配置为如下方式,将JMeter配置为接受此响应:

  • 要测试的字段:
    响应代码
  • 模式匹配规则:
    等于
  • 要测试的模式:
    非HTTP响应代码:org.apache.HTTP.conn.ConnectTimeoutException
  • 勾选
    忽略状态

这样JMeter会将超时请求视为成功:


这是否回答了您的问题?不是真的,正如我说过的,我想避免使用插件,因为团队的其他成员也必须安装插件才能运行脚本。我还有一个类似的问题(未回答),这是否回答了您的问题?不是真的,正如我所说,我希望避免使用插件,因为团队的其他成员也必须安装插件才能运行脚本。我还有一个类似的问题(没有回答)