Gatling post 请求在正文中发送 GraphQl 突变不起作用

Gatling post request sending GraphQl mutation in body not working

// 我尝试将突变发送为 json

val testAPIScenario = scenario("Sample test")
            .exec(http("graph ql sample test")
                .post("https://demo.com/")
                .body(RawFileBody("./src/gatling/resources/graphql/sample.json")).asJson
                .header("content-type",value = "application/json")
                .check(status.is(200))
            )

val testAPIScenario = scenario("Sample test")
            .exec(http("graph ql sample test")
                .post("https://demo.com/")
                .body(StringBody("\"query\":\""+getMutation()+"\",\"variables\":"+getVariables()+"}")).asJson
                .header("content-type",value = "application/json")
                .check(status.is(200))
            )

还尝试使用 ElFileBody 发送它,在文本文件中保留变异。

只需要知道是否有任何方法可以在 gatling body 中发送 graphQl 突变

我检查了日志,请求在 graphql 上正常进行,但它给了我 400,我认为存在一些格式问题请指导我

您的代码中有几处错误。

  1. 正文路径

RawFileBody("./src/gatling/resources/graphql/sample.json") 非常脆弱,因为它取决于您启动进程的位置,如果文件系统上没有展开的项目(例如 Gatling Enterprise),它会中断。

更喜欢RawFileBody("graphql/sample.json")

  1. 值参数而不是函数参数

来自documentation, StringBody takes an Expression,意思是可以传递一个值,或者一个函数。

在您的代码中,您传递的是前者,因此 getMutation()getVariables() 在传递值时仅被调用一次。

相反,您想传递一个函数,以便每次虚拟用户尝试构建和发送此请求时调用它们:

StringBody(session => "\"query\":\""+getMutation()+"\",\"variables\":"+getVariables()+"}")