如何使用 BDD 构建 CRUD 测试

2024-04-14

我陷入了一个进退两难的境地,试图找出答案best构建我的 CRUD 测试的方式。在我的应用程序中,用户可以创建多种类型的“任务”。我当前的实现如下所示:

Scenario:  Create Task-Type A
Given I am on a user's profile page
And Have access to create tasks
When I create a new task with a unique title and description
Then The confirmation prompt should display

Scenario:  Read the Task-Type A
Given A new task was created
When I search the text on the page for the unique title
Then I should find the task
And All the details of the task should match what was created

Scenario:  Update the Task-Type A
Given A task exists
And I have opened the edit dialog
When I make the following changes:
| title | description | date | save |
| ""    | ""          | ""   | yes  |
Then all the saved changes should match the task details

Scenario: Delete the Take-Type A
Given A task exist
When I select the option to delete
And I confirm deletion process
Then The Task should no longer exist in the list

我在这里寻求帮助的原因是因为我无法控制 CRUD 步骤的执行顺序。我使用 Specflow 和 NUnit,它们按字母顺序而不是它们在功能文件中出现的顺序执行场景。这会导致这个顺序 C > D > R > U,这当然会在运行时崩溃并烧毁。

我尝试在场景名称的开头添加字符,结果是“场景:第 1 阶段创建...”、“场景:第 2 阶段读取...”等。但当我做出这个改变时,我忍不住想这感觉是多么“黑客”。我已经做了一些研究,但在很大程度上没有找到更好的方法来控制执行顺序。

我确实有多个这样的 CRUD 测试要编写;每种类型的“任务”都有一个,我想知道是否最好尝试将整个 CRUD 堆栈压缩为一个场景,这样我就不必担心执行顺序,或者是否有更好的方法来控制执行?


依赖场景的执行顺序是一种反模式,应该避免。出于同样的原因,测试运行程序通常不提供任何机制来控制执行顺序。这也违背了可执行规范的概念:场景本身应该是可理解的(并且可执行的)。
Source: Specflow - “场景”之间的状态 https://stackoverflow.com/questions/7158810/specflow-state-between-scenarios

因此,我建议使用一种场景,或者,如果您想要单独的场景,只需使它们独立于执行顺序即可。
例如,对于删除场景,您应该在此场景中执行 CRU 前提条件,然后执行带有验证的删除步骤。
对于最佳实践(恕我直言) - 请参阅 Kent Beck 文章:https://www.facebook.com/notes/kent-beck/decompose-run-on-tests/555371804495688 https://www.facebook.com/notes/kent-beck/decompose-run-on-tests/555371804495688

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 BDD 构建 CRUD 测试 的相关文章

  • Perl 和 Selenium::远程::驱动程序

    再次编辑 我在弗吉尼亚州北部某处的 AWS 上有一台服务器 这是我的监控服务器 我从另一个状态 ssh 进入这个 Ubuntu 服务器来进行系统管理 我想在这台服务器上进行 Web 自动化测试 它将测试互联网上的 Web 应用程序 点击 U
  • 消息“在 jest.setTimeout 指定的 5000 毫秒超时内未调用异步回调”

    我正在使用 Puppeteer 和 Jest 来运行一些前端测试 我的测试如下 describe Profile Tab Exists and Clickable settings user gt test Assert that you
  • 使用 xctool 运行单个 KIWI 规范

    有没有人能够成功地将 KW SPEC 变量传递给 xctool 我正在尝试使用以下命令来运行单个 KIWI 规范https github com kiwi bdd Kiwi wiki Kiwi FAQ q how do i run a si
  • MSTest 相当于 NUnit 的参数化测试吗?

    NUnit 支持一项功能 您可以为要多次运行的单元测试指定一组数据输入 RowTest Row 1001 1 2 3 Row 1 1001 2 3 Row 1 2 1001 3 public void SumTests int x int
  • 如何生成源代码来创建我正在调试的对象?

    我的典型场景 我处理的遗留代码有一个错误 只有生产中的客户端才会遇到 我附加了一个调试器并找出如何重现该问题their系统给定their输入 但是 我还不知道为什么会发生错误 现在我想在本地系统上编写一个自动化测试来尝试重现然后修复错误 最
  • 测试随机值 - 对这种方法的想法?

    好的 我一直在研究随机图像选择器和队列系统 因此您不会经常看到相同的图像 一切都很顺利 就我蹩脚的代码而言 until我到了随机位 我想测试一下 但是如何测试呢 没有Debug Assert i IsRandom 可悲的是 D 所以 我在用
  • 使用 CrudRepository 进行自定义查询

    我想使用 CrudRepository 自定义查询 这是我的代码 Repository public interface CustomerRepository extends CrudRepository
  • 为什么在从同一解决方案引用另一个项目时会出现 FileNotFound 异常?

    我正在学习如何使用 NUnit 我的解决方案中有我的主项目 并在同一解决方案中创建了一个单独的项目 该项目将保存我的单元测试 并具有自己的命名空间 从该项目中 我添加对主项目的引用并添加 using MainProjectNamespace
  • 使用 UiPath 循环 Excel 文件中的 URL

    我尝试了几种方法 但不知怎的 它们看起来不干净 我有一个 Excel 格式的 URL 文件 一列中有 400 多个 URL 我希望 UiPath 从该文件中读取并一一浏览这些 URL 我尝试让 导航到 从从 Excel 读取的变量中读取 但
  • 您可以像将数据传递给测试用例一样将数据传递给测试装置吗?

    您可以像将数据传递给测试用例一样将数据传递给 NUnit3 测试装置吗 这样做有意义吗 根据参数运行套件 夹具类 绝对地 如果你需要传入的参数数量有限 你可以将它们放在普通的参数中 TestFixture 属性 它们将被传递给 TestFi
  • 如何使用 asp.net 5 项目运行 nunit 测试,尤其是使用 ReSharper?

    我正在开发一个针对 dnx451 的 asp net 5 应用程序 asp net 5 项目依赖于一些为 nunit 2 x 编写的带有单元测试的库 所以对我来说合理的选择是使用 nunit 来测试 asp net 5 项目 当我在 ReS
  • 如何在 TestNG 报告中包含 Log4j2 消息

    我希望在所有测试用例的 TestNG 报告中提供 Log4j2 日志记录信息 TestNG 使用一个名为 Reporter java 的特殊记录器类来跟踪日志输出并将其保存在其结果 XML 中 在 log4j 中 可以简单地创建一个路由到
  • 单元测试 Bash 脚本

    我们的系统除了 Java 代码之外还运行一些 Bash 脚本 既然我们正在努力测试所有可能损坏的东西 并且那些 Bash 脚本可能会损坏 我们想测试它们 问题是很难测试 Bash 脚本 有没有测试 Bash 脚本的方法或最佳实践 或者我们应
  • Net Core ILogger 值不能为空

    我收到记录器值不能为空 我正在尝试解决这个问题 也许是通过依赖注入来解决的 在单元测试和程序中的其他地方都会收到错误 我是否正确进行依赖注入 Expected
  • BoDi.ObjectContainerException 接口无法解析:OpenQA.Selenium.IWebDriver

    我正在创建一个新框架 因为 PageFactory 已被弃用 我收到错误 BoDi ObjectContainerException Interface cannot be resolved OpenQA Selenium IWebDriv
  • 筛选 NUnit MSBuild 任务的类别?

    我正在设置一个 MSBuild 项目来运行一些 NUnit 测试 使用MSBuild 社区任务项目 http msbuildtasks tigris org 通过这些设置 我将能够运行 NUnit 测试
  • 测试用例执行完成后,无论是否通过,如何将测试用例结果保存在变量中?

    我正在使用 NUNIT 在 Visual Studio 中使用 Selenium WebDriver 测试用例的代码是 我想在执行测试用例后立即在变量中记录测试用例通过或失败的情况 我怎样才能实现这一点 NUnit 假设您使用 NUnit
  • NUnit 与 xUnit

    两者有什么区别NUnit http www nunit org and xUnit net https xunit net 开发其中两个而不是仅一个有什么意义 我读到 xUnit 是由 NUnit 的发明者开发的 xUnit net 是 N
  • 通过 jquery/javascript 在警报或确认对话框中单击“确定”?

    我正在考虑在backbone js 和jquery 中编写一些UI 测试 它们可能不是最好的方法 但这是我正在考虑的事情 通过纯代码自动化测试而无需记录和回放 使用这种方法唯一让我摸不着头脑的是 在某些 用例流程 执行的 中 会出现确认 警
  • 同时使用 MSTest 和 NUnit?

    阅读有关 MSTest 和 NUnit 的内容后 我无法真正决定在我的项目中使用什么 我们使用TFS 2008和VS2010 我喜欢 MSTest 因为它集成到 VS2010 持续集成和代码覆盖率报告中 我喜欢 NUnit 因为它允许以良好

随机推荐