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);
}
}