我需要更新包含Gatling模拟中使用的一些id的. csv文件,因为我需要事先创建数据。我试图在前()调用中更新该文件,但它不起作用。懒惰评估也不起作用。
before {
Helper.CreateDocuments()
}
lazy val documentIds = csv("data/documentIds.csv").circular
val scn: ScenarioBuilder = scenario("PutFile")
.feed(documentIds)
.exec(http("Dynamic id")
.put("files/${documentId}"))...
我怎样才能解决这个问题,用刷新的ID为模拟提供数据?
您应该能够在前
步骤中修改csv文件。例如:
before {
val pw = new PrintWriter(new File("data.csv"))
for (i <- 0 to 10) {
pw.write(i + "\n")
}
pw.close
}
记得导入库导入java.io._
然后在模拟中使用它调用文件:
val orderId = csv("data.csv").queue
但是,这可能是多余的,因为您可以使用saveAs
步骤创建值,如Gatling会话API文档中所述。例如,您可以执行以下操作:
val someHttpCall = http("Create data for the feeder").get("/my/resource").saveAs("data")
然后在进料器中使用:
val scn = feed(data).exec(somethingElse)
如果这还不够,请记住,您还可以在simulation类中的任意点创建自己的馈线。
我遇到过类似的问题,然后我决定不使用CSV,而是使用隐式馈线,并创建一个构建馈线的方法。我无法通过使用前钩子来解决这个问题,因此为我的馈线创建了一个构建器方法。它将如何工作的示例。
import io.gatling.core.Predef._
import io.gatling.core.structure.ChainBuilder
import io.gatling.http.Predef._
import org.apache.http.client.methods.{HttpGet, HttpPost}
import org.apache.http.entity.StringEntity
import org.apache.http.impl.client.HttpClientBuilder
import org.apache.http.util.EntityUtils
import spray.json.DefaultJsonProtocol._
import spray.json._
object TestFacade {
var test_feeder = getFeeder()
val test_scenario: ChainBuilder = feed(test_feeder).group("TEST_GROUP") {
exec(
http("POST /test")
.post("/test")
.header("Content-Type", Configuration.APPLICATION_JSON)
.body(ElFileBody("test.json"))
.asJSON
.check(status.find.in(200))
)
}
def getFeeder() = {
val result = getRestContent("http://www.randomnumberapi.com/api/v1.0/random?min=100&max=1000&count=5")
val ids = result.parseJson.convertTo[Array[Int]]
var coolVars = Array.empty[Map[String, String]]
for (id <- ids) {
println(id)
coolVars = coolVars :+ Map("coolVar" -> id.toString)
}
coolVars.random
}
def getRestContent(url: String): String = {
val httpClient = HttpClientBuilder.create().build()
val httpResponse = httpClient.execute(new HttpGet(url))
val entity = httpResponse.getEntity
var content = ""
if (entity != null) {
content = EntityUtils.toString(entity, "UTF-8")
}
httpClient.getConnectionManager.shutdown()
content
}
}
我使用CSV馈送器来馈送多个模拟。当使用gatlingRun运行时,每个模拟从一开始就开始读取文件。我将进料器保存在对象变量中(必须像静态变量一样): 有没有办法让所有模拟都使用相同的馈线实例,或者让每个实例在其他实例完成的地方继续?
问题内容: 我想用一个新的 jar* 更新一个 .class 文件。什么是最简单的方法,尤其是在Eclipse IDE中? * 问题答案: 本教程详细介绍了如何更新jar文件 其中“ u”表示更新。
问题内容: 我有一个表Product,该表显示一组产品的信息。 我正在使用下面的Ajax调用您更新表。 如何在我的Ajax调用中使用“结果”更新变量product_list? 这应该更新表吧? 谢谢 问题答案: 你不能这样。更好的方法是通过ajax加载html的那部分。 您的ajax视图: 您的主要html: table_body.html: 您的ajax看起来像这样: 你在这里使用这个load(
我想在运行Gatling场景期间更改令牌,因为我想与不同的用户进行测试,这是我的HTTP协议: 如何在
我有一个问题,通过phpmailer脚本发送带有附件的电子邮件。我有一个工作代码,如果我想添加一个单一的文件到邮件。但是当涉及到多个文件时,看起来它们甚至没有上传。 单个文件的我的代码: } 我尝试了一些代码,这些代码应该循环遍历$\u文件中的所有文件,但没有成功。然后我测试了以下代码: 它返回0。我知道$\u文件是空的,但我不知道原因。我需要缓冲文件或类似的东西吗? 编辑:这是我的html代码,
如何在gatling模拟中运行多个空手道功能文件? 以下是我gatling模拟的代码片段: 我每次只能运行一个功能文件,如下所示: