Ich habe ein Problem, wo es aussieht, als ob Daten aus einem Feeder nicht zur Sitzung hinzugefügt werden. Ich teste ein System, bei dem ein Benutzer eine Rolle hat (d. H. Benutzer oder Administrator), und ich muss abhängig von der Rolle verschiedene Tests durchführen. Im Anschluss an das erweiterte Tutorial habe ich meine Ketten in verschiedene Objekte aufgeteilt (jedes Objekt in einer eigenen Datei) - eines der Objekte enthält die Login-Prozedur, die unabhängig von der Benutzerrolle gleich ist. Ich möchte das wiederverwenden, aber mit verschiedenen Feedern.Daten vom Feeder nicht im Szenario verfügbar
Ich lade den Benutzernamen und das Passwort mit dem CSV-Feeder, aber es sieht so aus, als ob es die Daten nicht zur Sitzung hinzufügen, weil ich Failed to build request Submit user/password: No attribute named 'password' is defined
beim Ausführen der Simulation erhalten.
Hier ist mein Code, die in mehrere Dateien aufgeteilt:
Simulation.scala
import io.gatling.core.Predef._
import io.gatling.http.Predef._
class Simulation extends Simulation {
val httpProtocol = http
.baseURL("baseURI")
val admins = scenario("Admins")
.feed(csv("admins.csv"))
.exec(Login.login)
.exec(TaskA.taskA)
val users = scenario("Users")
.feed(csv("users.csv"))
.exec(
Login.login,
TaskB.taskB,
TaskC.taskC
)
setUp(
admins.inject(atOnceUsers(1))/*,
users.inject(atOnceUsers(1))*/
).protocols(httpProtocol)
}
Login.scala
object Login {
val login = group("Login") {
exec(http("Get form")
.get("/login/login.php")
.check(form("""form[name="relay"]""").saveAs("passwordForm")))
.pause(10 seconds)
.exec(http("Submit user/password")
.post("/login/authenticate.php")
.form("${passwordForm}")
.formParam("pass", "${password}") //TODO: get from feeder
.formParam("user", "${username}") //TODO: get from feeder
)
}
}
Vorerst die CSV-Dateien sind die gleich:
username,password
user,user
Seltsamerweise funktioniert es, wenn ich die .feed(csv("admins.csv"))
in Login.scala verschiebe, aber dann kann ich es nicht für Benutzer verwenden.