通过不同的方案传递定义的变量是行不通的

尝试使用PATCH方法将POST场景的响应引用传递给另一个场景,并更改其中一个属性并获取错误。 对源代码进行补偿我发现当为一个场景调用Scripts.assign时,变量作用域不会传递给另一个场景。

  • 空手道版:0.5.0
  • Java版本:1.8

测试的全部function:

Feature: Products CRUD Test Background: * url demoBaseUrl Scenario: fetch some products Given path 'products' When method get Then status 200 And assert response.size() === 6 Scenario: add a product Given path 'products' And request {name: 'Iphone 7 Plus 128GB', description: 'Iphone 7 Plus Space Gray 128GB' } When method post Then status 200 And match response contains { id: '#number', name: 'Iphone 7 Plus 128GB', description: 'Iphone 7 Plus Space Gray 128GB'} And def newProduct = response Scenario: update a product Given path 'products' And def payload = {name: '#(newProduct.name)', description: '#(newProduct.description)'} And set payload $.id = #(newProduct.id) And match payload.id == (newProduct.id) And request payload When method patch Then status 200 And match response contains {name: 'New Product Iphone 7'} 

这是设计使用 – 如果您需要将变量放在function中的所有Scenario的范围内,请将其移至Background 。 如果您只想将此变量初始化一次,请查看callonce关键字。