如何在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
相关产品推荐
相关产品推荐

