You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Cypress中对Smoke、Sanity、Regression类测试用例进行分组?

Cypress 实现测试用例按Smoke/Sanity/Regression分组管理方案

方案1:自定义标签分组(更灵活,支持跨模块用例归类)

这种方式不需要改动现有测试文件的目录结构,通过给测试用例/测试集打标签实现分组。

步骤1:给测试用例/测试集添加标签

Cypress 原生支持给it(单条用例)和describe(测试集)添加tags属性,示例如下:

// 单条用例同时属于Smoke和Sanity分组
it('验证账号密码登录功能可用', { tags: ['@smoke', '@sanity'] }, () => {
  cy.visit('/login')
  cy.get('[name=username]').type('test')
  cy.get('[name=password]').type('123456')
  cy.get('#submit').click()
  cy.url().should('contain', '/home')
})

// 整个测试集的所有用例都属于Regression分组,其中单条用例可额外加标签
describe('商品模块全量测试', { tags: ['@regression'] }, () => {
  it('验证商品创建功能', () => {
    // 测试逻辑
  })
  it('验证商品库存扣减逻辑', { tags: ['@sanity'] }, () => {
    // 测试逻辑
  })
})

步骤2:运行时按标签筛选用例

执行测试时通过--env grepTags参数指定要运行的分组即可:

  • 仅运行Smoke用例:npx cypress run --env grepTags=@smoke
  • 仅运行Sanity用例:npx cypress run --env grepTags=@sanity
  • 仅运行Regression用例:npx cypress run --env grepTags=@regression
  • 同时运行Smoke和Sanity用例:npx cypress run --env grepTags="@smoke @sanity"
    如果是在GUI界面运行,也可以在Cypress运行器的设置面板中手动配置grepTags参数筛选对应分组的用例。

方案2:目录结构分组(更直观,适合按分组统一管理测试文件)

如果希望从物理结构上隔离不同分组的用例,可以直接按分组创建对应的目录存放测试文件,目录结构示例:

cypress/e2e/
├── smoke/          # 冒烟测试用例目录
│   ├── login.cy.js
│   └── home.cy.js
├── sanity/         # 准入测试用例目录
│   ├── order.cy.js
│   └── user.cy.js
└── regression/     # 回归测试用例目录
    ├── pay.cy.js
    └── refund.cy.js

运行时通过--spec参数指定对应目录即可筛选对应分组的用例:

  • 运行所有Smoke用例:npx cypress run --spec "cypress/e2e/smoke/**/*.cy.js"
  • 运行所有Sanity用例:npx cypress run --spec "cypress/e2e/sanity/**/*.cy.js"
  • 运行所有Regression用例:npx cypress run --spec "cypress/e2e/regression/**/*.cy.js"

两种方案可以搭配使用,比如用目录做业务模块划分,用标签做跨模块的测试类型分组,适配不同的测试执行需求。

内容的提问来源于stack exchange,提问作者Silentkiller

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 11:57:03