@karate如何在加特林模拟类中将参数传递给特征文件?

时间:2018-07-24 17:16:05

标签: scala gatling karate

让我们考虑一个场景,我们必须针对“创建帐户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!")
  }
}

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

让我在这里提出一个要求,

假设我们有一些用于特定数据CRUD操作的功能文件。在这里,我要如何编写功能方案,

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

现在,如果我针对单个操作进行性能测试用例,我觉得有2种方法,

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

这里只是想了解性能测试的第二种方法,用空手道是否可以实现?如果可以,请告诉我如何做?

  

摘要-我认为使用第3个功能文件(额外)可以实现   个别用例,但我不想制作额外的功能文件   对于每种情况,这样我就可以避免维护工作并可以采取   从功能上重用现有功能文件的优势   测试到性能测试。

1 个答案:

答案 0 :(得分:0)

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

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

例如:

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

编辑:编辑问题后,很显然您有一个要测试的单流程。请使用一个功能。建议您将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