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

Rest 是否建议将所有场景响应数据保存到外部文件中,并读取代码内部而不是功能文件?,rest,cucumber,karate,Rest,Cucumber,Karate,请帮助我了解BDD和功能文件的最佳用法 我有Rest调用,需要验证响应数据。我可以从下面提到的功能文件中给出预期的响应数据吗 Then response includes the following in any order: | data[].username | 1111 | | data[].phoneNumbers[].phoneNumber | 122-222-2222 | | data[].retailLoc

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

我有Rest调用,需要验证响应数据。我可以从下面提到的功能文件中给出预期的响应数据吗

Then response includes the following in any order:

| data[].username           | 1111 |
   | data[].phoneNumbers[].phoneNumber                  | 122-222-2222        |
| data[].retailLocationRoles[*].securityRoleId | 10 |
否则,我是否应该将预期的响应数据(如上所述的表数据)保存在外部文件中并读取代码内部?这是最佳实践吗

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

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


感谢您的阅读。

这完全取决于您。如果从外部文件读取,则可以在多个功能中重复使用这些文件。如果你不需要重复使用,让它们保持在线。请不要担心“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

如果需要,您可以通过调用JS文件或功能文件来重新使用上面的
用户
对象。

感谢peter的回复,如果我将响应数据保存在外部文件中,则不确定哪个调用的数据。试想一下,我们已经为多用户数据提供了一个场景,如何在外部文件中进行管理。如果有200个不同数据的场景,如果场景随机失败。从内存的角度考虑,每个场景都会加载整个文件来读取特定的数据。。。如果我们的测试并行运行,RAM将占用多少内存。我相信我们可以将输入数据保存在json文件中,因为当我们为多个post调用使用相同的输入体时。@krishna01012002探索空手道有多种方法来实现这一点。你可以这样做:)谢谢Peter的帮助:)很抱歉打扰你,我希望你理解我的问题,我从你那里了解到的,我们必须创建JSON文件例如:用户响应作为一个JSON文件,数据应该像在JAVA中创建pojo类一样从fature文件传递,如果我错了,请纠正我