scala - Gatling - 动态设置请求名称
问题描述
我可以动态定义请求名称吗?我试过了,http(s"/product${prID}"
但出现错误(未找到变量 prID):
val searchByProductIdTask = exec(http(s"/product${prID}")
.post(appURL + "/api/product/search")
.headers(jsonHeader)
.body(StringBody(my_string_body)).asJSON
.check(status.is(200), responseTimeInMillis.lessThan("${expectedResponseTime}"))
).pause(5)
更新:
这里是整个代码:
import scala.concurrent.duration._
import io.gatling.core.Predef._
import io.gatling.http.Predef._
import io.gatling.jdbc.Predef._
import java.time.Instant
class Product_Szenario extends Simulation {
val scenarioName = "Test_Product"
val baseURL="My_Base_URL"
val appURL="My_URL"
val httpProtocol = http
.baseURL(baseURL)
.acceptEncodingHeader("gzip, deflate")
.acceptLanguageHeader("de,en-US;q=0.7,en;q=0.3")
.userAgentHeader("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0")
.connectionHeader("keep-alive")
.disableWarmUp
.disableCaching
val jsonHeader = Map(
"Accept" -> "*/*",
"Content-Type" -> "application/json",
"X-Requested-With" -> "XMLHttpRequest")
object Product {
val searchByProductIdTask = exec(http(s"/product${prID}")
.post(appURL + "/api/product/search")
.headers(jsonHeader)
.body(StringBody("""{"prID":"${prID}"}""")).asJSON
.check(status.is(200), responseTimeInMillis.lessThan("${expectedResponseTime}"))
)
}
object Szenario{
val products = csv("product.csv").records
val filialFeeder = csv("filial.csv").circular //50%
val start= exec(repeat(products.size, "n"){
feed(products.queue)
.feed(filialFeeder)
.exec(Product.searchByProductIdTask)
.pause(5)
})
}
val scnProduct = scenario(scenarioName)
.exec(
session =>{
session.set("appUrl",baseURL + appURL + "/")
.set("expectedResponseTime", 20000) // set to time you want check fails - find long time responses
}
).exec(
Szenario.start
)
setUp(
scnProduct.inject(atOnceUsers(1))//, First Scenario
).protocols(httpProtocol)
}
解决方案
使用字符串插值,你错过了s"${expectedResponseTime}"
倒数第二行!
val searchByProductIdTask = exec(http(s"/product${prID}")
.post(appURL + "/api/product/search")
.headers(jsonHeader)
.body(StringBody(my_string_body)).asJSON
.check(status.is(200), responseTimeInMillis.lessThan(s"${expectedResponseTime}"))
).pause(5)
推荐阅读
- reactjs - 在组件的构造函数中调用函数?
- php - Laravel 中的 Guard 自定义用于自定义身份验证
- javascript - 如何在 React Native 中获取字符串的某些部分?
- python - ./python:加载共享库时出错:libssl.so.1.1:无法打开共享对象文件:没有这样的文件或目录
- regex - 如何在文本中掩盖信用卡号掩码?
- xamarin - 在 Xamarin UWP 应用程序中,如何获取当前 Windows 登录的用户详细信息
- android - 带有来自服务器的数字标记的谷歌地图
- java - 在我的程序中获取 IllegalStateException?
- google-cloud-platform - 限制部署的云功能的最大数量有什么意义?
- oracle - 如何将数据从 Oracle 数据库导出到 AWS S3 存储桶