是否建议将所有方案响应数据保存在外部文件中,并在代码内读取功能文件,而不是在功能文件内读取?

时间:2019-01-27 09:02:35

标签: rest cucumber karate

请帮助我了解BDD和功能文件的最佳用法。

我有休息电话,需要验证响应数据。我可以按如下所述从功能文件中给出预期的响应数据吗?

Then response includes the following in any order:

| data[].username           | 1111 |
   | data[].phoneNumbers[].phoneNumber                  | 122-222-2222        |
| data[].retailLocationRoles[*].securityRoleId | 10 |

否则我应该将预期的响应数据(如上所述的表数据)保存在外部文件中并在代码内部读取吗?这是最佳做法吗?

如果将来预期的响应数据发生更改,那么在功能部件内部进行更改是否是一个好主意?还是我们需要遵循TDD流程?

有人建议我将数据保留在外部文件中,而不是在功能文件中,并在代码内部读取外部文件数据,并说在响应数据更改时更改功能文件不是一个好主意。

感谢阅读。

1 个答案:

答案 0 :(得分:1)

完全取决于您。如果您从外部文件读取,则可以在多个功能中重复使用它们。如果您不需要重复使用,请使其保持在线状态。并且请不要担心您可以ignore it使用“ BDD”。

将JSON文件保留在外部的另一个好处是,您可以在JSON编辑器中打开它们。

不要过度思考测试,只是开始就可以,一旦您理解了这些概念,就可以在以后轻松地进行开发。

由于您似乎只在寻找特定项目,因此正常匹配就足够了:

* def response = { data: [ { username: '1111', phoneNumbers: [ '122-222-2222' ], retailLocationRoles: [ { securityRoleId: 10 } ] } ] }

* def phone = '122-222-2222'
* def role = { securityRoleId: 10 }
* def user = { username: '1111', phoneNumbers: '#(^phone)', retailLocationRoles: '#(^role)' }

* match response.data contains user

如果需要,可以通过user重用上面的call对象到JS文件或功能文件。