【问题标题】:Cypress delete testing data after testingCypress 测试后删除测试数据
【发布时间】:2021-11-05 18:10:58
【问题描述】:

我刚刚在 cypress 上创建了一个测试文件(MERN 堆栈),运行测试后,我想从我的 Mongoose 数据库中删除它。有什么方法可以在测试成功运行后立即删除该数据?我不想手动操作。

【问题讨论】:

  • 您可以利用 afterafterEach 挂钩向 MongoDB 发送删除请求以删除数据

标签: reactjs cypress mern


【解决方案1】:

我使用的一种方法是使用所有清理脚本创建一个单独的规范文件(例如.cleanup.spec.js),并确保该文件在测试结束时运行。为了确保这一点,您可以使用cypress.json 中的testFiles 选项。它的作用是按您提到的顺序加载测试。

  "testFiles": [
    "Some Test 1.spec.js",
    "Some Test 2.spec.js",
    "Some Test 3.spec.js",
    "cleanup.spec.js"
  ]

使用afterEach() 删除测试数据在过去对我来说总是造成问题,原因如@Mihi 所述

【讨论】:

  • 请参阅@Brendan 警告here
  • 还有来自 Gleb 的一些建议,反对测试订购 here(只是为了平衡讨论 - 如果它有效,那么就可以)
【解决方案2】:

Cypress 建议不要使用after()afterEach() 进行清理,而是使用before()beforeEach() 在播种或测试之前清理数据库。

原因是,如果发生崩溃或程序化测试重试,after* 挂钩可能不会运行。

这样做before* 意味着测试总是看到正确的数据库状态。

【讨论】:

【解决方案3】:

根据您的需要,您可以执行以下操作之一:

  1. 使用afterEach删除记录
describe('Example', () => {
  afterEach(() => {
    // delete the record
  })

  // Include tests here
})
  1. 使用此处定义的after:run 挂钩:https://docs.cypress.io/api/plugins/after-run-api

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-06
    • 2020-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-21
    • 2019-08-22
    • 2021-10-30
    相关资源
    最近更新 更多