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

时间:2018-12-14 15:43:54

标签: 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();
        });
    },
};

1 个答案:

答案 0 :(得分:3)

当然有!只需使用臭名昭著的Nightwatch test hooks

  • 如果您想过滤您的测试套件,那么正如您所指出的, 我们将使用global test hooks
  • 如果您要过滤测试用例,那么我们将使用test hooks

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

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 <
  }
};

最后,引用DOC:

  

之前之后将在执行以下操作之前和之后运行   测试套件(在我们的示例中为 ),而 beforeEach afterEach   以及每个测试案例之后(测试步骤)。


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

Nightwatch@v0.9.x:

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

Nightwatch@v1.0.x:

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

仍然可以在这里做出妥协!只需尝试从您的beforeafter中找到常见的重复步骤/说明等在/custom_commands文件中挂钩并提取该逻辑。这将压缩您的测试文件,并使登录名与钩子脱钩。从长远来看,这还将在维护钩子时提供单点更改的优势。