-
Notifications
You must be signed in to change notification settings - Fork 83
3. Погружаемся в инструментарий и библиотеки
Gradle — система для автоматизации сборки приложений, применяющая языки Java, Groovy, JavaScript, Kotlin и другие. Сама система написана на Java, Kotlin и Groovy и поддерживает плагины на других языках. Распространяется бесплатно, как ПО с открытым исходным кодом.
Gradle необходима для ускорения сборки проекта. Можно собрать весь проект руками, но на это уйдет много времени. А можно написать скрип, который сам выполнит все рутинные операции и выдаст готовую сборку.
В других типах систем сборки кода используется языка разметки XML. Такой подход усложняет написание конфигурации проекта. Использование Groovy расширяет возможности и ускоряет работу.
Gradle распространяется по открытой лицензии, поэтому разработчики могут писать для него плагины и библиотеки, что значительно расширяет возможности системы.
Инструмент подстраивается под любую архитектуру проекта, что позволяет использовать его практически во всех сферах разработки и тестирования.
Gradle создает текстовый файл сценария сборки (BuildScript), который состоит из:
-
Project. Финальный продукт сборки. Проект может представлять собой JAR-файл, архив или веб-приложение со всеми подключенными библиотеками. Проект может состоять как из одного модуля, так и из нескольких.
-
Task. Задачи, которые необходимо выполнить для того, чтобы собрать проект. Задачи могут быть связаны между собой. Проект считается собранным, когда выполнены все задачи.
-
Dependency. Необходимы для сборки модули и библиотеки. Внешние зависимости обычно называют сторонними библиотеками, а внутренние — модулями проекта.
Предполагается, что у вас уже установлена библиотека JUnit 5 и вы успели выполнить первое домашнее задание. Если нет, то перейдите по ссылке и следуйте руководству.
Для подключения JUnit 5 к проекту необходимо добавить в раздел dependencies
файла build.gradle
следующее:
dependencies {
testImplementation (
"org.junit.jupiter:junit-jupiter:5.8.2")
}
test {
useJUnitPlatform()
}
Далее необходимо создать корневой пакет. Для этого в папке src
надо перейти в директорию test
и в ней создать каталог с именем вашей компании или личным сайтом. При этом домен верхнего уровня должен стоят в начале. К примеру, guru.qa
или com.vk
. Это необязательное условие, но такой подход считается правилом хорошего тона. Далее все тесты необходимо создавать в корневом пакете.
Аннотации JUnit 5 пока можно считать своеобразными метками, указывающим, что конкретный метод/класс надо выполнить по-особенному. Аннотация @Test
необходима для отметки метода/класса в качестве теста JUnit.
Пример:
Система проверит утверждение в скобках, и если тест будет пройден (сообщение в скобках окажется истинной, то тест будет считаться пройденным)
@Test
void assertTets() {
Assertions.assertTrue(2 < 3);
}
Если есть действия, которые необходимо выполнять перед каждым тестом или после него, то необязательно прописывать их в каждом тесте. Можно написать один метод/класс и отметить его как @BeforeEach (перед каждым) или @AfterEach (после каждого). В таком случае эти действия автоматически будут выполнять перед каждым тестом или после него.
@BeforeEach
void openPage() {
Selenide.open("https://page.com");
}
@AfterEach
void closeWindow() {
WebDriverRunner.closeWindow();
}
Если какие-то методы необходимо выполнять в начале перед всеми действиями или после них, то их следует отметить аннотациями @BeforeAll и @AfterAll соответственно. Также важно отметить, что такие методы должны обязательно быть static
@BeforeAll
static void initDB() {
//...
//...
}
@AfterAll
static void cleanDB() {
//...
//...
}
Selenide — фреймворк, разработанный для автоматизации тестирования с помощью Selenium Web Driver. Представляет собой автоматизированную систему тестирования ПО. Система помогает отправлять HTTP-запросы и получать ответы.
В файле build.gradle
необходимо указать:
dependencies {
testImplementation (
"com.codeborne:selenide:6.3.5")
}
Вместе с подключенным JUnit 5 будет выглядеть так:
dependencies {
testImplementation (
"com.codeborne:selenide:6.3.5",
"org.junit.jupiter:junit-jupiter:5.8.2")
}
test {
useJUnitPlatform()
}
Для ввода в текстовые поля сперва необходимо найти на странице необходимый CSS-селектор. Для этого в Chrome надо открыть режим просмотра кода страницы, нажать на иконку выбора элементов (1), навести на необходимое поле (2) и браузер подскажет имя CSS-селектора (2, 4).
Далее напишем код для теста этого текстового поля:
@Test
void fillFormTest() {
open("https://demoqa.com/text-box");
$("[id=userName]").setValue("Ivan Ivanov");
// Код следует повторить для всех полей на странице
}
Отправка формы на странице из примера подразумевает клик по кнопке. Для этого ищем селектор кнопки, но вместо setValue
(нам не надо вводить значение в кнопку) указываем click
.
@Test
void fillFormTest() {
open("https://demoqa.com/text-box");
$("[id=userName]").setValue("Ivan Ivanov");
$("[id=submit]").click();
}
Далее необходимо проверить, что все данные отправились верно. Для этого напишем отдельные тесты:
@Test
void fillFormTest() {
open("https://demoqa.com/text-box");
$("[id=userName]").setValue("Ivan Ivanov");
$("[id=submit]").click();
$("[id=output]").shouldHave(text("Ivan Ivanov"));
Если надо проверить несколько значений, то можно поступить так:
$("[id=output]").shouldHave(text("Ivan Ivanov"), text("some text"), text("some text"));

✔️ Сайт
✔️ Чат в Telegram
✔️ Канал в Telegarm
Содержание
Командная строка
Кодировка UTF-8 в Java
Список полезных книг для автоматизаторов тестирования на языке Java
Список полезных книг для автоматизаторов тестирования на языке Python
Структура проекта
Github README.md
Java:
1. Вводное занятие. Сразу к практике.
2. Git. GitHub. Погружаемся.
3. Погружаемся в инструментарий и библиотеки
4. Основы Java
5. Продолжаем разрабатывать автотесты. PageObjects
6. JUnit 5
7. Allure Reports
8. Работа с файлами
9. Selenide #1
10. Jenkins. Создаем первую задачу
11. Управляем параметрами в коде и в Jenkins
12. Отправляем уведомления о результатах прохождения автотестов
13. Учимся быстро разрабатывать проекты для тестовых заданий
14. Selenoid
15. Библиотека Owner
16. REST API. Пишем автотесты с Rest assured
17. REST API. Декомпозируем UI тесты. Подключаем отчетность
18. REST API. Продолжаем изучать
19. Мобильная автоматизация #1. Разрабатываем автотесты с Browserstack
20. Allure TestOps
21. Переезд на собственную инфраструктуру Java
Python:
1. Вводное занятие. Сразу к практике!
2. Погружаемся в инструментарий и библиотеки
3. Git. GitHub. Погружаемся.
4. Основы Python
5. Selene #1
6. Основы Python. Часть II
7. Основы Python. Часть III
8. Page Object
9. Allure Reports
10. Работаем с файлами Python
11. Jenkins. Создаем первую задачу и управляем параметрами Python
12. Телеграм бот. Отправляем уведомления о результатах прохождения тестов
13. Pytest
14. Selenoid
15. Pytest. Часть II
16. Venv, Poetry и управление зависимостями проекта
17. REST API. Часть I. Пишем автотесты с Requests
18. REST API. Часть II. Продолжаем изучать
19. Мобильная автоматизация #1. Разрабатываем автотесты с Browserstack
20. Мобильная автоматизация #2. Разрабатываем автотесты с эмулятором Android устройства
21. Allure TestOps
22. Переезд на собственную инфраструктуру Python