一、当需要每次执行用例之后做一些固定的操作时,就需要配置全局hook
全局hook.js默认是放在test目录下的,官方文档描述如下
二、如果自定义hook.js路径,可以通过.mocharc.yml配置文件配置
# "bail": true,
timeout: 2500
# grep: he
require: "src/config/global/hooks.js"
# recursive: true
reporter: "mochawesome"
file:
- 'src/api/login/dologin.js'
示例如下
#src/config/global/hook.js
const axios = require('axios');
const defaults = require('./defaults');
const path = require('./path');
axios.defaults.baseURL = defaults.baseurl;
exports.mochaHooks = {
beforeEach: async function() {
await axios.get(path.homepagepathList.pubkey)
.then( function (res) {
defaults.session = res.data
})
.catch(function (error){
})
// global setup for all tests
},
afterAll: function() {
// one-time final cleanup
}
};
三、可以通过追加config配置文件、file配置,指定不同的测试脚本使用不同的hook
四、全局hook
官方示例
exports.mochaGlobalTeardown = async function() {
await this.server.stop();
console.log('server stopped!');
};
// fixtures.cjs
// can be async or not
exports.mochaGlobalSetup = async function() {
this.server = await startSomeServer({port: process.env.TEST_PORT});
console.log(`server running on port ${this.server.port}`);
};
全局hook同样可以通过命令行参数追加的形式使用
mocha --require fixtures.mjs test.spec.mjs
也可以通过.mocharc.yml配置文件使用