使用 Globals.js 的每个测试用例的 beforeEach 和 AfterEach

Ala*_*Das 6 javascript nightwatch.js

所以,我有一个 globals.js 文件,我在其中提到了 beforeEach 和 afterEach,但是我可以从这个链接Nightwatch Globals 中了解到,beforeEach 和 afterEach 在测试套件(单个 Js 文件)之前和之后被调用一次。但是在我的框架中,我在单个 js 文件(或测试套件)中有多个测试用例,我想在每个测试用例之前和之后调用 beforeEach 和 afterEach。无论如何要实现这一目标?下面是我的 globals.js 文件:

module.exports = {
    asyncHookTimeout: 40000,

    beforeEach: function (browser, done) {
        // browser.maximizeWindow();
        // browser.deleteCookies();
        browser.perform(function () {
            console.log('Inside BeforeEach');
            done();
        });
    }

    afterEach: function (browser, done) {
        browser.end(function () {
            console.log("Inside After Each");
            done();
        });
    },
};
Run Code Online (Sandbox Code Playgroud)

iam*_*hiv 8

当然有!只需使用臭名昭著的 Nightwatch测试挂钩即可

  • 如果你想过滤你的测试套件,那么正如你所指出的,我们将使用全局测试钩子
  • 如果你想过滤你的测试用例,那么我们将使用测试钩子

示例您的测试文件应如下所示):

module.exports = {

  before(browser) {
    // > this will get run only ONCE, before all the tests <
  },
  beforeEach(browser) {
    // > this will get run before every test case <
  }

  tags: ['your', 'tags', 'go', 'here'],
  'Test Case No.1': (browser) => {
     // > this test does something here <
  },
  'Test Case No.2': (browser) => {
     // > this test does something else here <
  },
  'Test Case No.3': (browser) => {
     // > this test does something else here <
  },

  afterEach(browser) {
    // > this will get run after every test case <
  },
  after(browser) {
    // > this will get run ONCE, after all tests have run <
  }
};
Run Code Online (Sandbox Code Playgroud)

最后,引用 DOC:

之前之后将测试前和测试套件分别执行(运行后,在我们的情况下,测试文件),而beforeEachafterEach前和每个测试用例(后都跑测试步骤)。


LE:@AlapanDas 想要的是定制 Nightwatch 测试运行程序处理测试级挂钩的方式。这当然是可行的,但很脏。您必须从以下文件重新编写挂钩逻辑:

守夜人@v0.9.x:

  • testcase.js(路径:)/nightwatch/lib/runner/testcase.js
  • testsuite.js(路径:)/nightwatch/lib/runner/testsuite.js

守夜人@v1.0.x:

  • 文件夹中的每个{hookName}.js文件/hooks(路径:)/nightwatch/lib/testsuite/hooks/*.js

不过,在这里可以做出妥协!只是试图找到共同的,经常性的步骤/指令从你的beforeafter等挂钩,并提取内部的逻辑/custom_commands文件。这将压缩您的测试文件,并将登录与钩子分离。从长远来看,这也在维护钩子时赋予单点更改的优势。