Первоначально опубликовано blog.kevinlamping.com
Мой первый интерес к автоматизированному тестированию пришел в виде модульных испытаний.
С этим я узнал о утверждениях, тестовых люксах, обещаниях, издевателях и множестве других терминологии.
Эти знания помогали тонну при настройке Webdriverio. , функциональная утилита тестирования, с Моча , система тестирования JavaScript.
Для тех, кто начинается свежий, архитектура утверждений и испытаний люксов может быть незнакомой территорией.
Чтобы надеяться, что поможет с этим, я придумал простую аналогию, которая охватит следующие условия и как все они работают вместе:
- Селен
- Браузеры и драйверы
- Webdriverio.
- Моча
- Утверждения
- до/debedeafe/ionformed/после
- Обещания
Начать
Аналогия простая: Представьте, что вы хотите автоматизировать вашу коммутацию на работу, и экосистема WebDriaio – это то, как вам удастся. Есть несколько вещей, которые следует учитывать:
- Машина ездить
- Как водить машину
- Направления взять
- Ограничения скорости следовать
- Как сделать очередь благополучно
- Обработка задержек трафика
Автомобиль для вождения – браузеры и драйверы
Прежде чем мы сможем добраться куда угодно, нам нужно иметь машину для вождения (или велосипеда, для тех, кто чувствует себя более экологически чистыми). В нашей аналогии машина является браузером. Мы можем выбрать любую модель, которую мы предпочитаем: Chrome, IE, Safari, Firefox и др.
WebDriaio устанавливает браузер в Начальная конфигурация Отказ Вы даже можете выбрать несколько автомобилей для работы через MultiRemote Отказ
Драйверы являются конкретными интеграциями браузера для селена (подумайте о них, как ключевые ключи к автомобилю, которую вы хотите водить). Вам нужно будет установить для вас выбор браузера, прежде чем идти куда угодно. Вы можете сделать это вручную , но гораздо проще использовать пакет, как Селен-автономный модуль , который автоматически настроит это для вас.
Как водить машину – селен
Автомобиль бесполезна без кого-то (или чего-то), чтобы водить его. Также как браузеры, автомобили могут быть эксплуатированы вручную через человечество, но в этом веселье в этом?
Селен – это робот, который мы купили, чтобы контролировать входы автомобиля (рулевое колесо, газ, тормоз) и прочитать вывод автомобиля (спидометр, топливный счетчик). Это дружелюбный робот, не связанный с Чем больше зловещий вид Отказ
Вам нужно сделать некоторую работу, чтобы получить его. Чтобы загрузить роботу вверх, я рекомендую использовать NPM Selenium-bandalone модуль Чтобы обработать установку. Вы даже можете брать роботы от таких услуг, как Соусные лаборатории или Браусбурбак Отказ
Направления, чтобы взять – WebDriaio
Теперь, когда у вас есть робот готов к работе, вам нужно проинструктировать его, где ездить. Это где вот WebDriaio.
WebDriverio знает, как принять наши инструкции JavaScript и передайте их на наш робот Selenium. Есть Весь список вещей WebDriaio знает, как сказать/спросить Отказ
Написание вашего скрипта так же просто, как связывание набора инструкций. В движении вождения, возможно, вы хотите сделать следующее:
- Выйти из дороги
- Поверните налево на знак остановки
- Поверните направо на втором стоп-свете
На и дальше, пока вы не дойдете до работы. Для браузера вы можете сделать следующий набор задач:
- Загрузить URL-адрес сайта
- Нажмите на ссылку «Свяжитесь с»
- Введите адрес электронной почты в поле правильной формы
WebDriaio позволяет говорить на языке, с которым мы знакомы (JavaScript), чтобы получить информацию в робота и из робота.
Наш робот многоязычный кстати. Есть Другие инструменты доступны для интерфейса с Selenium Помимо WebDriaio. Если JavaScript не ваша вещь, вы можете написать инструкции в Ruby , Python или даже Шеркин-синтаксис Отказ
Ограничения скорости для последующих утверждений
Подумайте о том, чтобы ваш робот друг водил вас и с работы; Его цель – доставить вас там как можно быстрее. Это означает, что он может в конечном итоге идти быстрее, чем предписанный предел скорости, так как он на самом деле не знает, что является ограничением скорости. Это может работать на работу, но я уверен, что полиция будет иметь что сказать о вашей настройке.
Чтобы избежать нарушения закона, мы можем научить робота проверить скорость на знаках ограничения скорости. На языке тестирования это известно как «утверждения». Вы «утверждаете», что одно значение равно другому. В нашей аналогии мы утверждаем, что считывание спидометра соответствует номерам на знаке ограничения скорости.
Вот что может выглядеть код:
var speedLimit = 35; expect(mySpeed).to.equal(speedLimit);
Там есть много стилей утверждений. Есть даже Библиотека утверждения под названием Chai Это позволяет вам выбрать стиль, который соответствует вам лучше всего, сохраняя при этом одинаковую базовую функциональность.
Пример выше использует стиль «ожидать», но вот пара других:
Должен
mySpeed.should.equal(35);
Утверждать
assert.equal(mySpeed, 35);
Выбор стиля утверждения до вас; Это действительно предпочтение вещь. Просто Расскажите Mocha, что вы хотите И это поймет.
Как безопасно по очереди – Mocha & до/после крючков
Мы не говорили о том, как Mocha вписывается в. Если Chai – библиотека утверждений, которую мы используем для определения ожиданий, что делает Mocha?
Много, на самом деле. Утверждения необходимы для тестирования кода, но существует значительное количество создания и организации, необходимую для обеспечения раздува нашего теста/направления.
Вернуться к нашей приводной аналогии; В ходе нашего коммутации нам нужно сделать различные повороты, чтобы получить туда, где мы идем. Каждый ход требует от нас, чтобы замедлить, повернуть колесо, затем ускорить резервную копию. Мы могли бы справиться с этим на каждый ход, но что, если мы сможем предписывать набор шагов, чтобы взять до и после каждого перенаправления?
Это где Мокка может помочь. Mocha – это тестовая каркас, которая добавляет некоторые тонки вокруг наших утверждений. Главная особенность – описывать / Это Блоки, которые помогают организовать наш тестовый люкс.
Вот псевдо пример наших инструкций:
describe('car driving to work', function() {
it('should turn left at 32nd', function() {
slowDown();
turnWheel(360deg);
expect(direction).to.equal('north');
speedUp();
});
it('should turn right at 41st', function() {
slowDown();
turnWheel(-360deg);
expect(direction).to.equal('east');
speedUp();
});
it('should turn left at 53rd', function() {
slowDown();
turnWheel(360deg);
expect(direction).to.equal('north');
speedUp();
});
});
Вы заметите, как мы позвоним замедление и Ускорение для всех наших тестов. Это раздувает тестовый код и делает наши тесты Verbose.
У Мока есть еще одна обмана, чтобы помочь. Каждый Опишите Блок может иметь a Rebedeach и ДОПОЛНЕНИЕ крюк , который будет работать до/после каждого Это Инструкция.
Вот обновленный код кода:
describe('car driving to work', function () {
beforeEach(function() {
slowDown();
});
it('should turn left at 32nd', function() {
turnWheel(360deg);
expect(direction).to.equal('north');
});
it('should turn right at 41st', function() {
turnWheel(-360deg);
expect(direction).to.equal('east');
});
it('should turn left at 53rd', function() {
turnWheel(360deg);
expect(direction).to.equal('north');
});
afterEach(function() {
speedUp();
});
})
Теперь нам не нужно повторять себя в каждом тесте и могут сохранить Это Блоки, специфичные для конкретной инструкции.
Мокка также имеет до и после Функции, которые позволяют нам запустить одноразовый набор инструкций до/после всего тестового набора:
describe('car driving to work', function() {
before(function() {
startCar();
});
beforeEach(function() {
slowDown();
});
it('should turn left at 32nd', function() {
turnWheel(360deg);
expect(direction).to.equal('north');
});
// more tests here
afterEach(function() {
speedUp();
});
after(function() {
turnCarOff();
});
})
Нам нужно только начать машину в начале нашего тестового набора. Было бы не исключено начать/остановить его после каждого теста. Вы можете использовать до , Rebedeach , ДОПОЛНЕНИЕ и после Чтобы помочь сохранить ваши тесты чистыми и эффективными.
Обработка задержек трафика – обещает
Один последний пример, чтобы закончить нашу аналогию. Несмотря на то, что вы выписали свои направления полностью перед рукой, робот не может просто выполнить их все сразу. Мы также не можем полагаться на время, так как количество времени, которое требуется, чтобы добраться до улицы, сильно зависит от трафика в пути.
Точно так же браузер поддерживается с задержкой сети, занятыми серверами и так далее. Каждое действие требует неопределенного времени ожидания для выполнения.
Чтобы обойти этот вопрос, мы используем Обещания управлять ожиданием. С обещаниями мы можем записать код последовательно, с задержкой задержки встроены. Нам нужно пройти обещания, хотя, поэтому Mocha и WebDriaio в синхронизации.
WebDriaio поставляется со встроенным обещанием для обработки обещаний Так что вам не нужно ничего делать, чтобы сделать все это работать. Приятно упомянуть, что вы знаете о внутренней работе инструмента.
Заканчивать
Это конец аналогии. Подводить итоги:
- Браузеры – это машина для езды. Они управляются с помощью установленных драйверов селена-браузера.
- Селен – робот, который знает, как водить машину.
- WebDriverio предоставляет указаниям, чтобы принять в Selenium, на языке, который легко писать.
- Утверждения помогают проверять ограничения скорости. Chai – это обычная библиотека подтверждения.
- Крючки, такие как до/после помощи уменьшить дублирование кода, что облегчает проще к повороту
- Обещает помочь в обработке задержек из-за заторов по пути
Оригинал: “https://dev.to/klamping/take-a-drive-with-webdriverio-and-mocha-14e”