У меня проблема, когда данные из фидера не добавляются в сеанс. Я тестирую систему, в которой пользователь имеет роль (то есть пользователь или администратор), и мне нужно выполнить различные тесты в зависимости от роли. Следуя расширенному руководству, я разделил свои цепочки на разные объекты (каждый объект в собственном файле) - один из объектов содержит процедуру входа, которая является той же, независимо от роли пользователя. Я не буду повторно использовать это, но с разными фидерами.Данные из фидера недоступны в сценарии
Загружаю имя пользователя и пароль с помощью фидера csv, но похоже, что он не может добавить данные в сеанс, потому что при запуске симуляции я получаю Failed to build request Submit user/password: No attribute named 'password' is defined
.
Вот мой код, который разделен на несколько файлов:
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
)
}
}
Сейчас CSV-файлы являются такой же:
username,password
user,user
Как ни странно, это работает, если я перемещаю .feed(csv("admins.csv"))
в Login.scala, но тогда я не могу повторно использовать его для пользователей.