让我们考虑一个场景,我们必须针对“创建帐户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操作的功能文件。在这里,我要如何编写功能方案,现在,如果我针对单个操作进行性能测试用例,我觉得有2种方法,
这里只是想了解性能测试的第二种方法,用空手道是否可以实现?如果可以,请告诉我如何做?
摘要-我认为使用第3个功能文件(额外)可以实现 个别用例,但我不想制作额外的功能文件 对于每种情况,这样我就可以避免维护工作并可以采取 从功能上重用现有功能文件的优势 测试到性能测试。
答案 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