【问题标题】:@karate How to pass parameter to a feature file in gatling simulation class?@karate如何将参数传递给加特林模拟类中的特征文件?
【发布时间】:2020-04-14 02:01:47
【问题描述】:

让我们考虑一个场景,我们必须为“创建帐户 api”运行性能测试,该测试将输入作为标题/路径参数“身份验证令牌”并输入用户帐户名称等数据。因此,对于上述情况,我们有 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 文件来测试 SINGLE 流。

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

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

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

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

【问题讨论】:

    标签: scala karate


    【解决方案1】:

    只需使用普通的空手道概念,例如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
    

    【讨论】:

    • 这里我不是指 cmd 行 arg 中的某些变化。我期待某种方式在模拟类中传递特征文件的参数。我已经编辑了我的问题以便更好地理解。如果您需要更多信息,请告诉我。
    • @ManojMishra 您是空手道新手并直接进入性能测试吗?无论如何,请阅读我的编辑。
    • 嗨,彼得,谢谢您的建议。我再次编辑了我的问题并添加了一个要求,为什么我特别需要这个。如果我错过了一些让您理解的内容,请告诉我。
    • 感谢您为其创建 git 票证。
    • @ManojMishra 没问题。我对“参数”一词感到困惑,但我想我现在明白了。请在 GitHub 上讨论
    猜你喜欢
    • 1970-01-01
    • 2011-06-25
    • 2022-12-31
    • 1970-01-01
    • 1970-01-01
    • 2021-07-28
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    相关资源
    最近更新 更多