cucumber - 什么是更好的解决方案,在使用 Cucumber Java 时将测试数据保存在带有场景的功能文件或单独的文件(xml、json、yml)中?
问题描述
根据我的说法,将其与场景保持在一起更有意义,因为以下 1. 我们可以对不同的数据集使用相同的场景步骤。2. 如果我们在特征文件中指定它们,可读性也会增加。3. Cucumber 作为已经赋予的测试数据管理功能
但是在我以前的所有公司框架中,测试数据都保存在单独的文件中。
请让我知道什么是最好的方法。
解决方案
以下是决定我们是否应该使用data table
/examples
或外部数据文件的一些因素。
- 列数
- 数据是静态的还是动态的
- 数据来源
让我们讨论上述每一个。
1. 列数: 当您的列数少于 10 时,最好从特征文件中传递数据。但是超过 10 列会使场景更难阅读。列越多,阅读和维护就越复杂(容易出错)。在这种情况下,将数据保存在外部文件中会很容易。
2.数据是静态/动态: 如果您确定数据是静态的,这意味着您不必经常更改数据,那么您可以坚持使用特征文件。但是考虑一下这种情况,您的数据每次都会更改(例如:如果您要下 100 个订单,然后等待一段时间,并希望根据 OrderID 检查每个订单的状态。在这种情况下,您最好存储订单 ID ' 在外部文件中,并将它们作为其他验证功能的一部分)。
3. 数据来源 如果您确定数据将由有权访问功能文件的人员填写/更新,您可以使用功能文件。但是,考虑到测试数据将由外部团队/外部源(如数据库)填充的情况,那么最好将其分开维护,这样您可以获得文件并在有更新版本时替换它。(确保在这种情况下提供模板,以便外部团队和您在填写数据时轻松完成这项工作)。
可能还有其他情况会决定您的测试数据的正确位置,但这些是我头顶上的 3 点。
推荐阅读
- aem - 如何在 AEM 6.3 中的组件对话框中显示图像路径?
- android - Android 9.0 操作系统的 Sinch 验证失败
- ruby-on-rails - 如何登录/退出使用终端而不是浏览器的设计的 Rails 应用程序的用户帐户?
- javascript - 悬停时调用元素(没有唯一 ID)的函数
- java - cxf 客户端 (3.1.2) 中的 SNI 配置
- flutter - 警报对话框中复选框磁贴的动态列表不起作用
- solaris - solaris中查找堆内存的命令是什么
- api - 如何在 API Manager (apim) 中对 JWT 进行错误处理
- c# - 无法删除“Program Files\my app”文件夹中的文件:System.UnauthorizedAccessException:拒绝访问路径“”
- spring - 如何记录空通道