Простой и эффективный подход к автоматизации тестирования с использованием Mocha Framework

Mocha - это многофункциональная среда тестирования JavaScript, работающая на Node.js и в браузере, что делает асинхронное тестирование простым и увлекательным. Тесты Mocha запускаются последовательно, что позволяет создавать гибкие и точные отчеты, сопоставляя неперехваченные исключения с правильными тестовыми примерами. Размещено на GitHub.

Начнем с понимания того, как быстро настроить фреймворк мокко и выполнить образец теста. Убедитесь, что node.js уже установлен.

Откройте свой терминал и начните с установки пакетов mocha и chai (библиотеки утверждений).

mkdir programmatic-mocha-framework && cd programmatic-mocha-framework
npm init -y
npm i mocha chai
//setup first test
mkdir test
touch test/sample-test.js

Откройте файл sample-test.js и вставьте код ниже:

Обновите scripts в package.json.

"scripts": {
   "test": "mocha"
},

Выполните тесты, запустив npm run test, и отчет терминала будет сгенерирован со всеми 10 пройденными тестами, поскольку числа 0–9 меньше 10.

Теперь давайте посмотрим, как мы можем написать тот же тест программным способом.

Шаг 1

Создайте новый mocha-setup.js в папке lib, запустив mkdir lib && touch lib/mocha-setup.js. Как следует из названия, он будет содержать базовую настройку, необходимую для тестов мокко. Этот файл предоставляет возможность создавать новые наборы и тесты и предоставляет функцию для их выполнения.

Перед копированием приведенного ниже кода в файл тестовой установки установите два пакета, необходимых для базовой настройки npm i moment-timezone mochawesome

Шаг 2

Пришло время создать актуальный набор тестов и тесты. Во-первых, давайте создадим новый файл для размещения этих примеров тестов, запустив mkdir programmatic && touch programmatic/sample-tests.js. В этом файле мы:

  • Добавьте те же тесты, которые у нас были в каталоге тестов, но программным способом
  • Добавьте еще один набор тестов в родительский набор и добавьте тест в дочерний набор
  • Добавить тестовый каталог в родительский набор

Скопируйте приведенный ниже код в sample-tests.js

Шаг 3

После того, как все наборы тестов созданы, пора посмотреть, как их выполнять.

Создайте новый файл execute-test.js и скопируйте приведенный ниже код:

Шаг 4

Обновите package.json, заменив scripts приведенным ниже кодом

"scripts": {
     "test": "node execute-tests.js"
},

Давайте выполним тесты, выполнив ту же команду npm run test. Это автоматически создаст новую папку с именем execution-report, а подпапки будут созданы на основе текущей даты и времени. Mochawesome html и json будут доступны в папке currentime. Я выполнил тесты несколько раз, поэтому есть несколько папок с отметками времени. Весь ваш каталог будет выглядеть так:

Откройте отчет mochawesome.html, созданный в папке с последними отметками времени 22:03:03 (имя будет меняться в зависимости от времени выполнения).

Вот и все ... не стесняйтесь добавлять дополнительные тесты в programmatic/sample-tests.js

Преимущества

Некоторые из преимуществ, которые я обнаружил, работая над этим подходом:

  • Абстракция тестов от реального фреймворка
  • Централизованно управляемый дизайн фреймворка и возможность файлов тестов для каждой инициативы / проекта
  • Возможность динамически управлять данными тестов - это одно из ключевых преимуществ перед традиционным мокко. Таким образом, вы можете динамически считывать данные из файлов csv и выполнять итерацию для создания того же количества тестов, а не указывать жестко закодированное значение в коде.
  • Смена места в одном месте для всего фреймворка, используемого разными командами
  • Я использовал этот подход для загрузки файлов в корзину S3 и отправки уведомления по электронной почте о сбое, подняв lib / mocha-setup.js и передав имя инициативы в качестве параметра, чтобы различать файлы отчетов.

Для получения дополнительной информации перейдите в « Программное использование Mocha ».

Код доступен на моем git здесь. Не стесняйтесь обращаться ко мне в случае каких-либо отзывов.

Примечание от JavaScript In Plain English: Мы всегда заинтересованы в содействии продвижению качественного контента. Если у вас есть статья, которую вы хотели бы отправить в JavaScript In Plain English, отправьте нам электронное письмо по адресу [email protected] с вашим именем пользователя Medium, и мы добавим вас в качестве автора.