钩子函数-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 函数会作用于所有子级套件的测试用例,孙子级套件的测试用例…以此类推