Karate 在空手道中,将变量作为请求URL(而不是查询参数)的一部分从一个特征文件传递到另一个特征文件
我有一个生成车辆id的功能,并作为变量存储在该功能中。我想在另一个特性中将此id作为请求URL的一部分传递,作为一种拆卸活动 这是我从一个名为activateHicle.feature的功能调用它的方式Karate 在空手道中,将变量作为请求URL(而不是查询参数)的一部分从一个特征文件传递到另一个特征文件,karate,Karate,我有一个生成车辆id的功能,并作为变量存储在该功能中。我想在另一个特性中将此id作为请求URL的一部分传递,作为一种拆卸活动 这是我从一个名为activateHicle.feature的功能调用它的方式 Scenario : Activate a vehicle * header X-API-Key = apiKey * def result = callonce read('createVehicle.feature') * def vehicleId = re
Scenario : Activate a vehicle
* header X-API-Key = apiKey
* def result = callonce read('createVehicle.feature')
* def vehicleId = result.vId
# some workflow steps
........
........
........
# tear down - delete the vehicle created
* call read('deleteVehicle.feature'){ vehcileId: '#(vehicleId)' }
Scenario: Delete a vehicle
* header X-API-Key = apiKey
* def myurl = 'https://xxx/vehicle'+ vehicleId +'?permanent=yes'
Given myurl
And request ''
When method delete
Then status 200
在调用的功能中-deleteVehicle.feature
Scenario : Activate a vehicle
* header X-API-Key = apiKey
* def result = callonce read('createVehicle.feature')
* def vehicleId = result.vId
# some workflow steps
........
........
........
# tear down - delete the vehicle created
* call read('deleteVehicle.feature'){ vehcileId: '#(vehicleId)' }
Scenario: Delete a vehicle
* header X-API-Key = apiKey
* def myurl = 'https://xxx/vehicle'+ vehicleId +'?permanent=yes'
Given myurl
And request ''
When method delete
Then status 200
我的方法对吗?我想在其他工作流中重用deleteVehicle.feature,因此不在同一个ActivateHicle.feature中执行此操作(这将非常容易)。我也参考了文档,但它展示了如何使用请求主体中的变量,而不是作为可以在被调用的特性中的任何地方使用的变量。我不想在请求正文中使用它(但希望将其用作请求URL的一部分),例如:
Scenario:
Given url loginUrlBase
And request { userId: '#(username)', userPass: '#(password)' }
我还提到。我也这样做了,但得到了一个javascript错误:
feature.deleteVehicle: -unknown-:11 - javascript evaluation failed:
'https://xxx/vehicle'+ vehicleId +'?permanent=yes', ReferenceError: "vehicleId"
is not defined in <eval> at line number 1
feature.SVT: SVT.feature:80 - javascript evaluation failed: vehicleId: '#(vehicleId)' }, <eval>:1:14 Expected eof
but found }
vehicleId: '#(vehicleId)' }
^ in <eval> at line number 1 at column number 14
feature.deleteVehicle:-未知-:11-javascript评估失败:
'https://xxx/vehicle“+vehicleId+”?永久=是,参考错误:“vehicleId”
未在第1行中定义
feature.SVT:SVT.feature:80-javascript评估失败:vehicleId:“#(vehicleId)”},:1:14预期eof
但是发现}
vehicleId:“#(vehicleId)”}
^在第1行第14列中
有人能帮忙并提出建议吗 你能简化你的例子吗?我唯一能确定的是,在
call
功能之后和call参数之前需要一个空格:
* call read('deleteVehicle.feature') { vehcileId: '#(vehicleId)' }
我们通常建议的模式是设置not tearDown,因为如果出现错误,tearDown有不执行的风险。也就是说,请看挂钩:
有时,您应该保持简单,只在需要的地方调用功能(使用args)。这就是问题所在。呼叫功能和参数之间的空间。这就解决了问题。谢谢你,彼得。我也会看看挂钩。我希望编写一个处理拆卸的后功能场景,正如您正确指出的那样,拆卸上方的故障不会执行它。再次感谢皮特我犯的另一个错误是:
givemyurl
应该是giveurl myurl