Karate 重写被调用功能中的变量
我正在使用空手道为RESTAPI编写集成测试。在所有测试场景中,我都必须登录用户才能为所有与RESTAPI相关的调用获取身份验证令牌。因此,我想将登录逻辑放入一个单独的空手道功能中,这样我就不必将登录API调用复制并粘贴到所有其他场景中 从doku中,我可以知道如何在另一个功能中调用我的login.feature(注销,需要登录用户)。我还可以将用户名和密码从调用logout.feature传递给被调用的login.feature。但是我也希望我的login.feature可以自己执行,所以我必须在login.feature中定义用户名和密码。但是如果我这样做,我就不能从调用特性中重写这个变量 如果我像下面这样运行logout.feature,则login.feature不会使用我在logout.feature中提供的电子邮件参数。如果我从login.feature中删除电子邮件变量,则它会使用logout.feature中的参数,但我无法单独运行login.feature 正在调用logout.feature:Karate 重写被调用功能中的变量,karate,Karate,我正在使用空手道为RESTAPI编写集成测试。在所有测试场景中,我都必须登录用户才能为所有与RESTAPI相关的调用获取身份验证令牌。因此,我想将登录逻辑放入一个单独的空手道功能中,这样我就不必将登录API调用复制并粘贴到所有其他场景中 从doku中,我可以知道如何在另一个功能中调用我的login.feature(注销,需要登录用户)。我还可以将用户名和密码从调用logout.feature传递给被调用的login.feature。但是我也希望我的login.feature可以自己执行,所以我必
Feature: Login/Logout Test
Background:
* url urlBase http://localhost:5000
* def login = call read('classpath:ires/session/login.feature') {email: "user1@test.com", password: "test"}
* def authToken = login.authToken
Scenario: Testing logout via PUT
Given path '/sessions/logout'
Given param TOKEN = authToken
And request {}
When method PUT
Then status 202
名为login.feature:
Feature: Logs in the given user
Background:
* url urlBase http://localhost:5000
* def email = "user2@test.com"
* def password = "test"
Scenario: Test login via POST
Given path '/sessions/login'
And request {email: '#(email)', password: '#(password)'}
And print email
When method post
Then status 200
And def authToken = response
我的建议是,您可以创建一个
login caller.feature
,它将调用login.feature
,并传递适当的参数。另一个选项是在karate config.js
中全局定义email
和password
我不建议依赖未定义的变量,因为从长远来看,这会导致可维护性问题,但您可以执行这种条件检查:
* def email = typeof email == 'undefined' ? 'user2@test.com' : email
谢谢我现在有点喜欢条件检查变量;)但我看到它可能会在将来导致可维护性问题。