与测试套件相同的钩子集也可以在全局范围内使用,超出测试范围。在全局钩子的情况下,beforeEachafterEach 指的是测试套件(即测试文件),并在测试套件之前和之后运行。

全局 before[Each] 和 after[Each]

您还可以使用全局beforeafter [异步] 方法,这些方法可以在启动测试运行器之前和所有测试执行完毕后即将退出时执行操作。

类似地,全局beforeEachafterEach 将在每个测试套件(即测试文件)之前和之后调用。这些方法会接收 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(); };
}