首页 文章

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

提问于
浏览
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!")
  }
}

Here, can i read auth from generateAuth.feature file which is input for createAccount.feature file, so that i can pass as a parameter? 请建议我在调用karateFeature方法时如何将参数传递给createAccount.feature .

我在这里提出一个要求,

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

  • 我将创建新的特征文件来编写场景

  • 只需使用CRUD文件来测试SINGLE流 .

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

  • 创建新的4个性能测试功能文件(每个CRUD方法一个),并在相应的测试功能文件中调用这些CRUD功能文件 . 最后,我们只需在相应的gatling模拟类中调用测试功能文件 . (在这种情况下,我最终会创建更多测试功能文件以及性能模拟类,我想避免)

  • 只需在相应的gatling模拟类中调用CRUD文件,并将所需参数传递给它们 . (In this case , we just need to create only 4 simulation classes and run them on the basic of operation like create,read,delete and so on)

Here just wanted to know 2nd way of performance test, is it achievable or not in karate and if yes please let me know how?

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

1 回答

  • 0

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

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

    例如:

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

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

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

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

相关问题