我的加特林测试代码(Java)如下:
package computerdatabase;
import io.gatling.javaapi.core.ScenarioBuilder;
import io.gatling.javaapi.core.Simulation;
import io.gatling.javaapi.http.HttpProtocolBuilder;
import java.time.Duration;
import static io.gatling.javaapi.core.CoreDsl.*;
import static io.gatling.javaapi.http.HttpDsl.http;
import static io.gatling.javaapi.http.HttpDsl.status;
public class ProductSimulation extends Simulation {
HttpProtocolBuilder httpProtocol = http.baseUrl("https://dummyjson.com")
.header("Content-Type", "application/json")
.header("Accept-Encoding", "gzip")
.check(status().is(200));
ScenarioBuilder scn = scenario("GetProducts")
.exec(http("products").get("/products").body(StringBody("{}"))
.check((jsonPath("$.*").saveAs("response"))))
.exec(session -> {
System.out.println(session.getString("response"));
return session;
});
{
setUp(scn.injectOpen(constantUsersPerSec(1).during(Duration.ofSeconds(1)))).protocols(httpProtocol);
}
}
现在我获得了整个响应正文,但我只想要第一个“标题”,如“Essence Mascara Lash Princess”中给出的 json 响应正文(它的第一部分)
[{"id":1,"title":"Essence Mascara Lash Princess","description":".....
如何将“标题”保存到变量中并像对整个 json 响应那样打印它?
好吧,有两种方法。
第一个 - 您可以“直接”定义以提取第一个元素:
.check(jsonPath("$[0].title").saveAs("title")))
第二种方式 - 您可以保存所有元素,然后通过 Gattle EL 使用所需的元素:
.check(jsonPath("$..title").findAll.saveAs("titles")))
"${titles(1)}"