让我们考虑一个场景,我们必须运行“创建帐户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操作提供了一些功能文件。我在这里如何编写功能场景,
现在,如果我针对个人操作进行性能测试,我觉得有两种方法,
这里只是想知道性能测试的第二种方式,是否可以在空手道中实现,如果是,请告诉我如何?
总结 - 我认为可以使用第三个功能文件(额外)来实现个别用例,但我不想为每个案例制作额外的功能文件,以便我可以避免维护工作并可以利用现有功能文件的可重用性从功能测试到性能测试。
只需使用正常的空手道概念,如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