钩子函数-hook
hook
的作用
利用钩子函数可以在所有测试用例执行前做一些预置操作(如:准被测试数据、测试环境)
或者在测试结束后做一些后置操作(如:清理测试数据)
- 钩子函数在其它框架中也有,也称为生命周期函数
Mocha 提供的 Hook 函数
before()
beforeEach()
afterEach()
after()
before()
- 该测试套件下,所有测试用例的统一前置操作
- 它在一个 describe() 或 context() 内只会执行一次,在所有 it() 之前执行
after()
- 该测试套件下,所有测试用例的统一后置操作
- 它在一个 describe() 或 context() 内只会执行一次,在所有 it() 之后执行
beforeEach()
- 该测试套件下,每个测试用例的前置操作
- 一个 describe() 或 context() 内有多少个测试用例 it() ,就会执行几次
beforeEach()
afterEach()
- 该测试套件下,每个测试用例的后置操作
- 一个 describe() 或 context() 内有多少个测试用例 it() ,就会执行几次
afterEach()
测试
describe('hook test',()=>{before(()=>{cy.log('执行before方法');})beforeEach(()=>{cy.log('执行before each');})it('test1',()=>{cy.log('测试用例1');})it('test2',()=>{cy.log('测试用例2')})afterEach(()=>{cy.log('执行after each');})after(()=>{cy.log('执行after');})context('subsuite',()=>{before(()=>{cy.log('执行subbefore方法');})beforeEach(()=>{cy.log('执行sub before each');})it('test3',()=>{cy.log('测试用例3');})it('test4',()=>{cy.log('测试用例4')})afterEach(()=>{cy.log('执行subafter each');})after(()=>{cy.log('执行subafter');})})
})
运行结果
若包含多级测试套件,那么父级套件、祖父级套件声明的 hook 函数会作用于所有子级套件的测试用例,孙子级套件的测试用例…以此类推