当前位置: 首页 > 知识库问答 >
问题:

来自馈线的数据在场景中不可用

曾云
2023-03-14

我遇到了一个问题,似乎没有将来自馈线的数据添加到会话中。我正在测试一个系统,其中一个用户有一个角色(即用户或管理员),我需要根据角色执行各种测试。在高级教程之后,我将链拆分为不同的对象(每个对象都在自己的文件中)——其中一个对象包含登录过程,无论用户角色如何,登录过程都是相同的。我不想重复使用这个,但要用不同的喂食器。

我使用csv feeder加载用户名和密码,但看起来它无法将数据添加到会话中,因为我得到构建请求失败提交用户/密码:运行模拟时未定义名为“密码”的属性。

这是我的代码,它被分成多个文件:

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)
}

登录。斯卡拉

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

奇怪的是,如果我移动,它就会工作。将(csv(“admins.csv”)输入登录。scala,但我不能为用户重复使用它。


共有1个答案

长孙深
2023-03-14

事实证明,解决方案非常简单-将不同的登录实例注入到每个场景中,如下所示:

登录。斯卡拉

object Login {
  def login(feeder: FeederBuilder[_]): ChainBuilder = {
     feed(feeder)
     ...
  }
}

然后在模拟中

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")
    .exec(Login.login(csv("admins.csv")))
    .exec(TaskA.taskA)

  val users = scenario("Users")
  .exec(
    Login.login(csv("users.csv")),
    TaskB.taskB,
    TaskC.taskC
  )


  setUp(
    admins.inject(atOnceUsers(1))/*,
    users.inject(atOnceUsers(1))*/
  ).protocols(httpProtocol)
}
 类似资料:
  • 我必须使用Gatling/Scala编写一些测试。在我的具体情况下,我必须使用用户名和密码登录网站(此外还有密钥斗篷安全性)。有一个带有很多用户/密码行的CSV文件,我的目标是使用此CSV文件中的每个用户/密码登录。 问题是我不知道怎么做。我可以用用户名/密码和密钥斗篷的安全令牌登录,只需一个用户。到目前为止还可以,但还不够。以下是我到目前为止所做的。 第一类: 馈线类: 登录名: 如您所见,我在

  • 我想使用qaf-cucumber来利用QAF功能,同时仍然使用JUnit的Cucumber。主要是,我需要QAF的数据提供者功能,允许外部化场景示例。csv,以便在几个场景和功能中使用它们。 Junit:4.12 cucumber:5.0.0-RC2 QAF:2.1.15 qaf-cucumber: 2.1.15-beta-3(最新版本,因为还没有发布) 当使用场景上方的QAF标记来指定场景的位置

  •        场景数据的三维场景包括我的地标、图层和地形3个部分。场景数据以树状结构向用户呈现,每个结构都带一个复选框,可以用于控制数据的显示和隐藏。子节点(具体的元素),或者图层,可以通过双击快速定位(根节点双击是展开和合并)。 【我的地标】:用户自己添加的点、线、面标注会放在这个组下面。 【图层】:用户自己添加的图层,会显示在这个组下面,里面标记蓝色的是服务器图层,LocaSpaceViwer

  •        场景数据的三维场景包括我的地标、图层和地形3个部分。场景数据以树状结构向用户呈现,每个结构都带一个复选框,可以用于控制数据的显示和隐藏。子节点(具体的元素),或者图层,可以通过双击快速定位(根节点双击是展开和合并)。 【我的地标】:用户自己添加的点、线、面标注会放在这个组下面。 【图层】:用户自己添加的图层,会显示在这个组下面,里面标记蓝色的是服务器图层,LocaSpaceViwer

  • 想知道是否有办法在Twilio中实现这个用例(使用taskrouter或其他机制), 情况是这样的: 消费者拨打Twilio号码 Call flow调用返回3个代理电话号码的API 消费者需要根据以下逻辑连接到三个代理中的一个, 开始拨打代理电话1 响铃后/无应答秒 已拨打代理电话2 但联系代理电话1的尝试仍在继续 同样,也会拨打代理电话3 直到1号、2号或3号特工接电话为止 我知道可以同时拨打代

  • 问题内容: 我有一个使用javafx Scene来渲染某些东西的应用程序,并且我想将该渲染结果放入我在Javafx中创建的某些GUI中。我该怎么做? 基本上,有一些容器可以放入场景,然后将其放入GUI。 抱歉,如果是新手问题,我是JavaFX的新手 问题答案: 该场景只有一个顶级父节点作为根。您可以获取它并放入另一个场景。