全局测试钩子
与测试套件相同的钩子集也可以在全局范围内使用,超出测试范围。在全局钩子的情况下,beforeEach
和 afterEach
指的是测试套件(即测试文件),并在测试套件之前和之后运行。
全局 before[Each] 和 after[Each]
您还可以使用全局before
和 after
[异步] 方法,这些方法可以在启动测试运行器之前和所有测试执行完毕后即将退出时执行操作。
类似地,全局beforeEach
和 afterEach
将在每个测试套件(即测试文件)之前和之后调用。这些方法会接收 Nightwatch browser
对象。
这些方法定义在外部的 globals
文件中,并使用 globals
对象作为上下文进行调用。callback
是传递的唯一参数,并且必须在操作完成时调用。
示例
module.exports = {
'default' : {
isLocal : true,
},
'integration' : {
isLocal : false
},
// External before hook is ran at the beginning of the tests run, before creating the Selenium session
before(done) {
// run this only for the local-env
if (this.isLocal) {
// start the local server
App.startServer(function() {
// server listening
done();
});
} else {
done();
}
},
// External after hook is ran at the very end of the tests run, after closing the Selenium session
after(done) {
// run this only for the local-env
if (this.isLocal) {
// stop the local server
App.stopServer(function() {
// shutting down
done();
});
} else {
done();
}
},
// This will be run before each test suite is started
beforeEach(browser, done) {
// getting the session info
browser.status(function(result) {
console.log(result.value);
done();
});
},
// This will be run after each test suite is finished
afterEach(browser, done) {
console.log(browser.currentTest);
done();
},
// Called right after the command .navigateTo() is finished
async onBrowserNavigate(browser) {
return Promise.resolve();
},
// Called right before the command .quite() is finished
async onBrowserQuit(browser) {
return Promise.resolve();
};