测试套件测试用例排列:如何避免Cypress中相同步骤重复代码?
Cypress重复测试用例优化方案
核心实现逻辑
你需要的是参数化测试(表格驱动测试) + 公共步骤提取的组合方案,完全不用重复写相同的步骤代码。
方案1:测试套内置公共前置+遍历生成用例
把所有用例共同的long steps of click abcd步骤抽到当前测试套的beforeEach钩子中,该钩子会在所有测试用例执行前自动运行,无需每个用例单独编写。再把不同的测试参数做成数组,遍历自动生成所有用例:
describe('选择项测试套件', () => { // 公共前置步骤,所有用例执行前自动触发 beforeEach(() => { // 此处替换为你实际的点击abcd长步骤代码 cy.get('#abcd').click() // 其余公共步骤全部放在这里即可 }) // 定义所有测试参数组合,新增用例只需要加这部分配置 const testCases = [ { firstVal: '1a', secondVal: '2a', caseDesc: '选中1a+2a' }, { firstVal: '1a', secondVal: '2b', caseDesc: '选中1a+2b' }, { firstVal: '1b', secondVal: '2a', caseDesc: '选中1b+2a' }, { firstVal: '1b', secondVal: '2b', caseDesc: '选中1b+2b' }, ] // 遍历参数自动生成测试用例 testCases.forEach(item => { it(`测试用例:${item.caseDesc}`, () => { // 仅需要编写每个用例独有的选择逻辑 cy.get('#第一个选择器id').select(item.firstVal) cy.get('#第二个选择器id').select(item.secondVal) // 补充你的断言逻辑即可 }) }) })
方案2:公共步骤全局复用(多测试套共用场景)
如果这段长步骤需要在多个测试套中使用,可以将其封装为Cypress自定义全局命令:
- 在
cypress/support/commands.js文件中定义命令:
Cypress.Commands.add('execAbcdClickSteps', () => { // 此处替换为你实际的点击abcd长步骤代码 cy.get('#abcd').click() // 其余公共步骤全部放在这里即可 })
- 任何测试用例中都可以直接调用该命令,无需重复编写逻辑:
it('测试用例示例', () => { cy.execAbcdClickSteps() // 直接调用公共步骤 cy.get('#选择器').select('1a') // 其余用例逻辑 })
额外优化:自动生成全排列组合
如果后续选项数量变多,不需要手动写所有组合,可以自己实现一个全排列函数自动生成testCases数组,进一步减少重复配置工作。
内容的提问来源于stack exchange,提问作者user2201789
相关产品推荐
相关产品推荐

