Итак, у меня есть файл globals.js, в котором я упоминал beforeEach и afterEach, но из этой ссылки я мог понять, что глобальные переменные Nightwatch, beforeEach и afterEach вызываются один раз до и после Test Suite (один файл Js). Но в моей структуре у меня есть несколько тестовых случаев в одном файле js (или Test Suite), и я хочу вызывать 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();
});
},
};
Есть конечно! Просто воспользуйтесь пресловутыми тестовыми крючками 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 <
}
};
И, наконец, цитирование документов:
До и после будут запускаться до и после выполнения набора тестов соответственно (в нашем случае это файл теста), тогда как beforeEach и afterEach запускаются до и после каждого теста (шаг теста).
LE: То, что хочет @AlapanDas, - это индивидуально настроить способ, которым Nightwatch test runner обрабатывает перехватчики уровня тестирования. Это конечно выполнимо, но грязно. Вы должны переписать логику подключения из следующих файлов:
/nightwatch/lib/runner/testcase.js
);/nightwatch/lib/runner/testsuite.js
);/hooks
(путь: /nightwatch/lib/testsuite/hooks/*.js
); Тем не менее, здесь может быть достигнут компромисс! Просто попробуйте найти общие, повторяющиеся шаги/инструкции из ваших хуков before
, after
и т.д. И извлеките эту логику из файла /custom_commands
. Это сократит ваши тестовые файлы, а также отделит логин от ваших хуков. В долгосрочной перспективе это также предоставит преимущество единой точки изменения при обслуживании хуков.