В этом посте мы возьмем почтовый клиент, который поставляется с Windows 10 в качестве примера, чтобы показать, как написать сценарий автоматизации BDD для отправки электронных писем. Вы узнаете, как разработать сценарии автоматизации для приложения Windows UI, используя Node.js.
Почтовый клиент Windows 10 используется для получения и отправки электронных писем. Как приложение Windows, он также может быть автоматизирован и протестирован. В предыдущей статье Windows Automation 01 – начать с автоматизации калькулятора, мы представили, как автоматизировать калькулятор, который является относительным простым приложением. Сегодня я объясню подробнее, как автоматизировать почтовый клиент, немного сложнее Windows 10 приложений.
Содержание
- Предварительное условие
- Создать объект модели
- Создание сценариев
- Реализовать скрипт
- Используйте крючки
- Отчет о тестировании
- Резюме
Предпосылки
Подготовьте компьютер Windows 10, установите следующие инструменты:
Node.js : Node.js используется при установке пакетов NPM. Мы не будем использовать какие-либо дополнительные пакеты для этой статьи, но вы можете использовать некоторые внешние пакеты, когда вы пишете свой собственный сценарий.
Cuketest : Что можно установить с помощью ( http://cuketest.com ) или установить также из магазина Windows. Онлайн-документ: Cuketest Docs ;
Создать объект модели
Сначала создайте новый проект Cuketest, используя шаблон «Windows», как приведен ниже:
Вы можете назвать его «mail_test» или некоторое имя, которое вы предпочитаете. Откройте файл Model.tmodel, щелкнув его в проекте Explorer, и он будет открыт в Model Manager, компонент в Cuketest. На данный момент файл модели является пустой. Пожалуйста, добавьте следующие элементы управления на почтовом пользователе UI к модели:
- «Новая почта»
- “К:”
- “Предмет:”
- “Тело сообщения”
Для получения дополнительной информации о том, как добавить объекты в модель, вы можете обратиться к предыдущей статье Windows Automation 01 – начать с автоматизации калькулятора. Дополнительные объекты модели являются следующими:
Создание сценариев
Создать Огурец Испытательный сценарий в Cuketest и отредактируйте сценарий отправки почты:
Содержание этого файла функций:
Feature: Windows Mail Automation Automate Mail to send an email Scenario: Send Mail Given click [New mail] button When enter TO address "user@domain.com" And enter "Greeting from CukeTest" in the Subject And set the mail body as "How are you today." When click [Send] button Then mail should be sent out successfully
Нажмите на каждую кнопку со стрелкой рядом с шагом в приведенном выше сценарии, чтобы создать автоматический файл шаблона сценариев:
const { Given, When, Then } = require('cucumber'); const { TestModel } = require('leanpro.win'); const { Util } = require('leanpro.common'); let model = TestModel.loadModel(__dirname + "/model1.tmodel"); //// Your step definitions ///// Given(/^click \[New mail\] button$/, async function () { return 'pending'; }); When(/^enter TO address "([^"]*)"$/, async function (arg1) { return 'pending'; }); When(/^enter "([^"]*)" in the Subject$/, async function (arg1) { return 'pending'; }); When(/^set the mail body as "([^"]*)"$/, async function (arg1) { return 'pending'; }); When(/^click \[Send\] button$/, async function () { return 'pending'; }); Then(/^mail should be sent out successfully$/, async function () { return 'pending'; });
Реализуйте код автоматизации в соответствии с поведением, описанным на каждом этапе сценария. Таким образом, это ключ BDD, вы создаете сценарий сначала и только когда сценарий хорошо определен, вы реализуете сценарий.
Вот код реализации:
const { Given, When, Then } = require('cucumber'); const { TestModel } = require('leanpro.win'); const { Util } = require('leanpro.common'); const CukeTest = require('cuketest'); const assert = require('assert'); let model = TestModel.loadModel(__dirname + "/model1.tmodel"); //// Your step definitions ///// Given(/^click \[New mail\] button$/, async function () { await model.getWindow("Window").activate(); await model.getButton("New mail").click(); }); When(/^enter TO address "([^"]*)"$/, async function (email) { await model.getEdit("To:").clearAll(); await model.getEdit("To:").set(email); }); When(/^enter "([^"]*)" in the Subject$/, async function (subject) { await model.getEdit("Subject").clearAll(); await model.getEdit("Subject").pressKeys(subject); }); When(/^set the mail body as "([^"]*)"$/, async function (content) { await model.getEdit("Subject").pressKeys('{tab}'); await model.getEdit("Subject").pressKeys(content); }); When(/^click \[Send\] button$/, async function () { await model.getButton("Send").click(); }); Then(/^mail should be sent out successfully$/, async function () { await CukeTest.delay(1000); //wait for UI to respond. let exists = await model.getButton("Send").exists(); assert.equal(exists, false, 'send button should no longer exists'); });
После добавления этих Определения шага Код, вы можете сначала запустить почтовое приложение вручную, затем запустить сценарий автоматизации в качестве проекта и посмотреть, как он автоматизирует почтовый клиент, и он показывает вам отчет HTML.
Используйте крючки
Есть еще одна вещь, которую вы можете сделать, чтобы сделать скрипт более завершенным. Вы можете добавить крючки в проект, который можно использовать для установки периода времени ожидания по умолчанию и взять скриншот или делать очистку перед выходом.
Создайте новую поддержку/Cooks.js Файл:
const path = require('path'); const {Before, BeforeAll, After, AfterAll, setDefaultTimeout} = require('cucumber'); const cuketest = require('cuketest'); const { TestModel } = require('leanpro.win'); let modelFile = path.join(__dirname, '../step_definitions/model1.tmodel'); let model = TestModel.loadModel(modelFile); //set time out value for each step to be 10 seconds setDefaultTimeout(10 * 1000); // minimize CukeTest IDE before run BeforeAll(async function() { return cuketest.minimize(); }) // Take screenshot after the scenario After(async function() { let screen = await model.getWindow("Window").takeScreenshot(); this.attach(screen, 'image/png')}); // restore CukeTest IDE after run AfterAll(async function() { return cuketest.maximize(); })
Отчет о тестировании
Нажмите на кнопку Cuketest «Run Project», Cuketest будет минимизировать окно Cuketest, автоматизируйте почтовую заявку, а затем показывает окно отчета о тестировании после прогона.
Вы можете увидеть, что он включает в себя сводную часть, а также подробный отчет на каждый шаг. Он также возьмет скриншот почтового приложения и добавить его в отчет.
Резюме
Cuketest имеет встроенные шаблоны Windows, и он предоставляет BDD Test Frameworks и шаблоны отчетов. Он также обеспечивает контроль шпионажа и возможности редактирования моделей объектов. С ними легко создать сценарий автоматизации пользовательского интерфейса AUIS для приложений для хранения Windows 10, как только сценарий разработан, вы можете просто запустить этот тестовый скрипт с помощью Cuketest.
Смотрите также: Windows Automation 01 – Начнитесь с автоматизации калькулятора