java - Java Cucumber:使用动态示例创建场景大纲
问题描述
我们有一个测试,基本上我们需要在网站中输入一个特定的值,并确保另一个值出现。为此的输入输出数据存储在一个 XML 文件中。
现在我们可以创建一个运行一次并循环的单一场景,提交每个值但是我们遇到一些报告问题,如果 100 对中有 2 对失败,我们想知道哪些是失败的,而不仅仅是整个场景的断言错误。
我们将使用场景大纲获得更清晰的报告,其中所有值都在示例表中。然后场景本身重复运行,我们可以将单个集合作为断言错误失败,并在报告中清楚地显示出来。
问题:我们不想将 xml 中的所有值硬编码到 .feature 中。它很吵,但如果值发生变化,更新速度也会很慢。我们宁愿只提供 XML 解析它并继续,如果事情发生变化,我们只需放入更新的 XML。
有没有一种方法可以创建动态示例,我们可以重复运行场景,每个数据案例一个,而无需在示例表中明确定义?
解决方案
为此使用 Cucumber 是个坏主意。您应该使用单元测试来测试此功能,降低您的堆栈。
在您的代码中的某个时刻,在用户输入他们的值后,该值将被传递给一个方法/函数,该方法/函数将返回您的答案。这是进行此类测试的地方。
遍历整个堆栈的黄瓜测试将比编写良好的单元测试慢 3 个数量级以上。因此,您可以在运行一个 cuke 所需的时间内在单元测试中测试数千对值。
如果您在 Cucumber 中进行此类测试,您很快就会得到一个运行时间太长的测试套件,或者只能以巨大的代价快速运行。这对一个项目是非常有害的。
Cuking 应该是一条快乐的路径(用户可以输入一个值并查看结果),也可能是一条悲伤的路径(用户输入一个错误的值并看到错误/解释)。其他任何事情都需要下推到单元测试中。
推荐阅读
- assembly - VS Code 调试器不会为 Raspberry 4 上的 asm 代码启动:GDB:无法设置控制终端
- javascript - 未定义不是对象(评估'route.params.title')
- mlflow - MLFlow - 如何将运行从一个实验迁移或复制到另一个?
- flask - 下拉菜单不适用于 Flask-Bootstrap
- python - 我在 for 循环中使用 Tabulas;收到此错误:IndexError: list index out of range
- python - Python函数max()和ifelse结构耗时的一个问题
- javascript - 我无法从用户 [Discord.js v12] 那里获得语音频道
- kubernetes - 如何将大使与 Kubernetes 一起使用?
- python - Ajax 似乎只执行一次
- reactjs - REACT Props 在 useEffect 中未定义