JMeter可以模拟HTTP请求吗


问题内容

我想模拟HTTP请求,这意味着将 真实请求 发送到 真实服务器 ,但忽略(不等待)并使用虚拟响应覆盖响应,

JMeter有很多工具虽然接近但还不够,

DummySampler插件已关闭,但未真正发送请求,

直接针对Mirror
Server
旧答案似乎与特定的API请求和响应无关。

JMeter不模拟服务器。

话虽这么说,JMeter 2.3具有内置的镜像服务器-它接受任何HTTP请求并以包含请求详细信息的页面进行响应。

如果服务器B不在乎服务器C返回什么,则可以使用它来“模拟”服务器C。

我的答案是通过添加运行时控制器1秒并更新响应数据来忽略HTTP响应,这是一个有问题的解决方法,但可以解决。

插件中是否有更好的选择或并行执行某些其他工具?

是否有必要为JMeter打开增强功能,如果有的话,它应该改善HTTP Request还是作为Mock HTTP Request的新采样器?Runtime
Controller是否可以仅支持发送并停止等待响应(例如,使用0秒)?


问题答案:

最简单的选择就是使用WireMock,它非常强大和灵活。

您可以通过将WireMock
jar
(以及依赖项)添加到JMeter
Classpath
使用Groovy语言JSR223测试元素运行WireMockServer来将其与JMeter集成。

如果您对Groovy不太满意,则可以使用OS Process
Sampler
将WireMock作为独立的Java应用程序运行


import com.github.tomakehurst.wiremock.WireMockServer;
import com.github.tomakehurst.wiremock.stubbing.StubMapping;

import static com.github.tomakehurst.wiremock.client.WireMock.*;

public class WireMockTest {

    public static void main(String[] args) {
        WireMockServer wireMockServer = new WireMockServer();
        configureFor("0.0.0.0", 8080);
        wireMockServer.start();
        StubMapping foo = stubFor(get(urlEqualTo("/wiretest"))
                .willReturn(aResponse()
                        .withStatus(200)
                        .withBody("Hello World")));
        wireMockServer.addStubMapping(foo);
    }
}