@karate如何将参数传递给gatling模拟类中的特征文件?

问题描述 投票:1回答:1

让我们考虑一个场景,我们必须运行“创建帐户api”的性能测试,该测试将输入作为头/路径参数“Auth token”并输入数据,如用户帐户名。所以对于上面的场景我们有2个特征文件,

运行POST http://baseUrl/auth_param/create/input_data的性能测试1.一个功能(例如:generateAuth.feature)文件,它将具有身份验证令牌2.第二个功能(createAccount.feature)文件,它将参数作为身份验证令牌,输入数据。

这是我的模拟课,

class <MyClass> extends Simulation {

  before {
    println("Simulation is about to start!")
  }
  val generateAuthTest = scenario("generateAuth").exec(karateFeature("classpath:path/generateAuth.feature")) 
  val createAccountTest = scenario("test").exec(karateFeature("classpath:path/createAccount.feature"))
  setUp(
    createAccountTest.inject(rampUsers(1) over (10 seconds))).maxDuration(1 minutes)
  after {
    println("Simulation is finished!")
  }
}

在这里,我可以从generateAuth.feature文件中读取auth,该文件是createAccount.feature文件的输入,以便我可以作为参数传递吗?请建议我在调用karateFeature方法时如何将参数传递给createAccount.feature。

我在这里提出一个要求,

假设我们为特定数据的CRUD操作提供了一些功能文件。我在这里如何编写功能场景,

  1. 我将创建新的功能文件来编写场景
  2. 只需使用CRUD文件来测试SINGLE流程。

现在,如果我针对个人操作进行性能测试,我觉得有两种方法,

  1. 创建新的4个性能测试功能文件(每个CRUD方法一个),并在相应的测试功能文件中调用这些CRUD功能文件。最后,我们只需在相应的gatling模拟类中调用测试功能文件。 **(在这种情况下,我最终会创建更多测试功能文件以及性能模拟类,我想避免)**
  2. 只需在相应的gatling仿真类中调用CRUD文件,并将所需的参数传递给它们。(在这种情况下,我们只需要创建4个仿真类,并在创建,读取,删除等操作的基础上运行它们)

这里只是想知道性能测试的第二种方式,是否可以在空手道中实现,如果是,请告诉我如何?

总结 - 我认为可以使用第三个功能文件(额外)来实现个别用例,但我不想为每个案例制作额外的功能文件,以便我可以避免维护工作并可以利用现有功能文件的可重用性从功能测试到性能测试。

scala gatling karate
1个回答
0
投票

只需使用正常的空手道概念,如karate-config.js

您可以通过设置switch environments系统属性轻松地karate.env

例如:

mvn test -DargLine="-Dkarate.env=e2e"

编辑:在您编辑问题之后,很明显您有一个想要测试的SINGLE流程。请使用SINGLE功能。我建议你将generateAuth移动到该功能的Background中。另请参阅callSingle()上有关高级选项的文档。

如果您希望2个功能文件能够神奇地共享不可能的数据,并且在正确构建测试时不需要。

如果你真的需要这个,请创建一个Java单例并从每个功能访问它。完全不推荐这个。

编辑:在空手道0.9.0以后,你可以call a single scenario within a feature if it has a tag

classpath:animals/cats/create.feature@sometagname
© www.soinside.com 2019 - 2024. All rights reserved.