angular - 编写需要按​​顺序运行的 e2e 测试的最佳实践是什么?

标签 angular integration-testing ui-automation cypress e2e-testing

我们正在使用 Cypress.io 为我们的 Angular 应用程序编写 e2e 测试。我们面临的问题是,尽管我们知道测试不应该相互依赖,但实际上,在现实世界的应用程序中似乎不可能实现这一点。假设用户需要执行以下操作

  1. 注册
  2. 登录
  3. 创建类别
  4. 创建子类别
  5. 创建特定子类别中的产品

现在,如果我们必须为这些场景编写测试,我们要么必须编写一个巨大的测试来一次性完成所有这些工作,要么找到一种方法让它们按顺序运行,其中也许每个下一个测试都取决于前一个留下的状态。我很好奇大家是如何处理这种情况的,因为我觉得这种情况应该在真实的企业应用中经常出现。

最佳答案

  1. 注册
  2. 登录
  3. 创建类别
  4. 创建子类别
  5. 创建特定子类别中的产品

基本上,当您编写 E2E 测试时,第一条经验法则是您的测试必须独立运行,并且不应依赖于以前的测试。 在这里,您正在运行独立测试,但同时您正在进行 API 调用来完成您的前置步骤(在登录情况下,注册是通过 API 完成的)

所以基本上你可以按如下方式进行。

  1. 为注册功能编写测试。

  2. 现在进行登录测试,您将不再通过 UI 进行注册过程。因此,您只需调用 API 即可完成注册过程。
    原因:您的注册用户界面可能已损坏,而其余功能可以正常工作。所以你不会使用 UI 路由来做到这一点。所以进行API调用

  3. 如上所述,您将进行 API 调用来执行第一个和第二个测试用例,以实现第三个用例

  4. 如上所述,您将进行 API 调用来执行第 1 个、第 2 个和第 3 个测试用例,以实现第 4 个用例

  5. 如上所述,您将进行 API 调用来执行第 1 个、第 2 个、第 3 个和第 4 个测试用例,以实现第 5 个用例

关于angular - 编写需要按​​顺序运行的 e2e 测试的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62806415/

相关文章:

angularjs - 集成测试时在AngularJS中使用$injector(不使用ngMock)

ruby-on-rails - 在 Docker 中使用 capybara 和 headless selenium 浏览器进行 Rails 系统测试

比较两个值并在 Cypress 中做出决定

css - 如何在 angular2 单个组件中访问全局 SASS mixin 函数?

Angular - 类型 'Observable<unknown>' 不可分配给类型 'Observable<HttpEvent<any>>'

selenium - 如何通过终端使用 chrome 驱动程序运行 selenium 3.x

java - 在运行整个类(class)时如何跳到另一种方法?

vb.net - 在 VB.NET 表单中打开 Lotus Notes

javascript - 防止在 Angular 中按 Enter 键时提交表单

angular - 在 typescript 中的映射和归约期间,类型 '{}' 无法分配给类型 'object[]'