【发布时间】:2020-05-16 00:00:04
【问题描述】:
我正在尝试编写一些 Gherkin 功能文件,以便使用 SpecFlow 进行 BDD 验收测试。我正在尝试测试的系统由多个 RESTful API 组成——系统具有微服务架构。在一个场景中,在使用实际场景之前,我需要确定一些记录已经存在于数据库中,所以我包含了一个 Background 部分和一个 given 部分。我遇到的问题是,需要存在的每个记录都是通过 API 创建的,这些 API 在其架构联系人中需要大量数据,并且团队要求我在小黄瓜的记录中指定每个字段及其各自的值桌子。结果是这样的:
| PassportExpireDate|PassportNumber|PassportCountry |Firstname|Lastname|LocalFirstname|LocalLastname | Birthday | NationalNumber | NationalityCountryId | PassengerType | Gender |PartyId | SourceTravelerId | CellNumber | Price|
这是我的一个表的表头,它将用于在开始按规范进行实际测试之前在数据库中创建 Traveler 记录。但是,正如您所看到的,该表的字段太多,因此太长而无法在屏幕上显示,因此很难阅读和维护。其次,它与 DTO 模式紧密耦合。我认为我们不应该在我们的规范上放这么多细节,试图只包括重要的高级数据(例如,考虑到我们有一个名为“James Peterson”的现有旅行者),但团队和 CTO 坚持认为这些细节应该是出现在功能文件上。在我的下一次尝试中,我将表格拆分为多个表格(例如个人数据、订单数据、护照数据等)。
但我仍然很困惑,我认为我仍然没有做 wrie 的事情。你有什么建议?我们对此有任何经验法则或最佳做法吗?
【问题讨论】:
-
如何将所有数据放入文件中,例如 .csv,并在“鉴于文件
中的所有记录都存在于数据库中”的步骤中读取此文件?这样就不需要直接放到特征文件中了。 -
@MrCas 这对于垂直减小表的大小并将实际数据与特征文件分离是一个好主意。但即使我这样做了,我的问题仍然存在,因为我仍然需要指定列(字段)。请注意,编写测试步骤的开发人员必须使用 DTO 将实际请求发送到 API。
标签: cucumber bdd gherkin acceptance-testing