Cypress 继承并扩展了 Mocha
Mocha 提供了什么
- 多种接口来定义测试套件,Hooks,单个测试( Individual )
- BDD(Behavior-Driven Development,行为驱动开发)
- TDD(Test-Driven Development,测试驱动开发
- Exports、QUnit、Require
Cypress 采纳了 Mocha 的 BDD 语法
在 Mocha 中,一个 BDD 风格的测试用例看起来是这样的
/// <reference types="Cypress" />
import gatewayPage from "../../pages/baseinfo_manage/gateway_ele"
describe('网关模块', function(){
beforeEach(() => {
cy.login()
cy.visit(gatewayPage.gatewayEle.gatewayUrl)
console.log("测试前置工作")
})
describe("测试套件",function(){
context("网关新增",function(){
it("网关新增成功", function(){
gatewayPage.gatewayDoAdd()
})
})
context("网关解绑",function(){
it("网关解绑成功", function(){
gatewayPage.gatewaytDoDelete()
})
})
}
)
after(function(){
console.log("测试后置操作")
})
})
运行结果如下:
对于一条可执行的测试用例来说,有以下两个必要的组成部分
describe()
代表测试套件,里面可以设定 context() ,也可以包括多个测试用例 it() ,还能嵌套子测试套件
一个测试套件可以不包括任何钩子函数(Hook),但必须包含至少一条测试用例 it()
it()
代表一条测试用例
常见 Mocha 模块:
Cypress 将 Mocha 硬编码在自己的框架中,所以编写测试用例都是基于 Mocha 提供的如下基本功能模块:
describe() ——测试套件,必须有一个测试用例it()
context() ——和describe()一样
it() ——测试用例
before() ——钩子函数,在所有测试之前打开,比如在所有测试之前打开被测页面
beforeEach() ——钩子函数,在每个测试用例之前执行,用于隔离测试用例
afterEach() ——钩子函数,在每个测试用例之后执行
after() ——钩子函数,在所有测试之后执行
.only() ——指定执行测试套件或测试用例,describe.only() 或者 context.only()或者it.only()
.skip() ——跳过制定测试套件或测试用例,describe.skip() 或者 context.skip()或者it.skip()
钩子函数也可以用在support/index.js,用于全局操作,比如在测试之前处理测试数据等