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

2023-12-29

让我们考虑一个场景,我们必须运行“创建帐户 api”的性能测试,该测试将输入作为标头/路径参数“Auth token”并输入诸如用户帐户名称之类的数据。因此,对于上述场景,我们有 2 个功能文件,

运行 POST 性能测试http://baseUrl/auth_param/create/input_data http://baseUrl/auth_param/create/input_data1. 一个具有身份验证功能的功能(例如: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!")
  }
}

在这里,我可以从 createAuth.feature 文件中读取 auth (该文件是 createAccount.feature 文件的输入),以便我可以作为参数传递吗?请建议我在调用空手道功能方法时如何传递参数来创建 Account.feature。

在这里我提出一个要求,

假设我们有一些针对特定数据进行 CRUD 操作的功能文件。这是我如何编写功能场景,

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

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

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

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

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


只需使用普通的空手道概念,例如karate-config.js https://github.com/intuit/karate#configuration

您可以轻松地切换环境 https://github.com/intuit/karate#switching-the-environment通过设置karate.env系统属性。

例如:

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

编辑:编辑问题后,很明显您有一个要测试的流程。请使用单一功能。我建议你移动generateAuth进入Background的功能。另请参阅文档callSingle()对于高级选项。

如果您期望 2 个功能文件神奇地共享数据,那么如果您正确构建测试,那么这是不可能且不需要的。

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

编辑:在空手道 0.9.0 以后,你可以如果某个功能具有标签,则调用该功能中的单个场景 https://github.com/intuit/karate#call-tag-selector:

classpath:animals/cats/create.feature@sometagname
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐