beforeEach и AfterEach для каждого теста с использованием Globals.js

1

Итак, у меня есть файл 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.js

1 ответ

2

Есть конечно! Просто воспользуйтесь пресловутыми тестовыми крючками 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 обрабатывает перехватчики уровня тестирования. Это конечно выполнимо, но грязно. Вы должны переписать логику подключения из следующих файлов:

[email protected]:

  • testcase.js (путь: /nightwatch/lib/runner/testcase.js);
  • testsuite.js (путь: /nightwatch/lib/runner/testsuite.js);

[email protected]:

  • каждый файл {hookName}.js из папки /hooks (путь: /nightwatch/lib/testsuite/hooks/*.js);

Тем не менее, здесь может быть достигнут компромисс! Просто попробуйте найти общие, повторяющиеся шаги/инструкции из ваших хуков before, after и т.д. И извлеките эту логику из файла /custom_commands. Это сократит ваши тестовые файлы, а также отделит логин от ваших хуков. В долгосрочной перспективе это также предоставит преимущество единой точки изменения при обслуживании хуков.

  • 0
    В настоящее время я использую его так, как вы упомянули, и это несколько избыточно. Поэтому искал несколько способов реализовать его один раз и использовать его снова.
  • 0
    Привет @AlapanDas! Да, ну, это не избыточно. Они служат очень четкой, конкретной цели: предоставить вам доступ к хукам уровня тестирования . Никто не будет винить вас за то, что они есть во всех ваших тестовых файлах ( при условии логики звука для использования этих хуков ). Итак, это рекомендуемый способ использования хуков тестового уровня ! Я обновлю ответ тем, что вы должны попробовать, чтобы достичь этого, но, поверьте мне, у вас будет больше проблем, чем вы готовы.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню