Мой ТГ канал: https://t.me/maestro_autotests И так, сегодня добавил еще один тест на добавление медикамента в аптечку. Так же в проекте добавил несколько папок для лучшего ориентира, переименовал тесты, и воспользовался новой командой - runFlow:
Так же сегодня нашел место в приложении которое не удалось описать тестом, дальше в статье объясню почему)) но это не проблема, ведь автотесты пишутся в связке с разработчиком, и некоторые моменты необходимо решать вместе.
На сегодняшний день структура проекта выглядит так:
. ├── common │ ├── delete_medication.yaml │ └── shared_medkit.yaml ├── flows │ ├── add_medication.yaml.yaml │ └── create_medication.yaml └── scripts └── pause.js
Добавилась папка “common” в которую легли общие тесты, основные тесты я перенес в папку “flows”
Для чего это все? Для меня важно что бы каждый тест был самостоятельным и не зависел от результатов прохождения предыдущего. Для этого были написаны общие тесты, на сегодня это два теста “Удаление созданной корзины” delete_medication.yaml и “создание корзины” shared_medkit.yaml, что бы не дублировать один и тот же код в тесте с помощью команды - runFlow: я прокладываю путь к общим тестам.
И так вот код теста по добавлению медикамента:
# Добавление медикамента в аптечку appId: ru.zyfunphoto.MedicinesV2 — - launchApp
# Создаем аптечку - runFlow: …/common/shared_medkit.yaml
# Тапаем по аптечке - tapOn: id: cross.case.circle # Тапаем по иконке добавления плюсик - tapOn: id: plus - tapOn: “Введите название лекарства*” - inputText: “анальгин” - tapOn: “Введите тип (спрей, таблетки, сироп)” - inputText: “Таблетки” - tapOn: “Введите назначение (температура, кашель)” - inputText: “Головная боль” - tapOn: “Готово” - tapOn: “Введите действующее вещество” - inputText: “Анальгетик” - tapOn: “Готово” - tapOn: “Введите производителя лекарства” - inputText: “Производство” - swipe: from: text: Производитель direction: UP - tapOn: Инструмент выбора даты - tapOn: суббота, 28 февраля - doubleTapOn: point: 11%,48% - tapOn: “Введите описание или комментарии” - inputText: “Так доктор прописал” - tapOn: “Готово” - tapOn: text: Сохранить index: 1 - tapOn: “Не сейчас” # Проверяем что товар создался - assertVisible: pills.circle - tapOn: Аптечки # Удаляем тестовые данные - runFlow: …/common/delete_medication.yaml
В этом тесте видно что в нем используется сразу две команды - runFlow:.
Так же в этом тесте мне пришлось пропустить поле “В наличии” - мне не удалось его заполнить т.к после того как я делаю поле активным в нем остается поумолчанию введенные символы “0.00” не удалив эти нули новое число не введешь, таким образом мы нашли можно сказать небольшую UХ багу, решив этот момент, можно будет внести пропущенное поле в тест.
видео и фото прикреплю ниже.
—
Подытожу:
1. runFlow - удобный инструмент для переиспользования кода. Теперь у меня есть библиотека общих шагов, которые можно вызывать из любого теста.
2. Структура проекта - это важно. Разделение на папки common, flows и scripts делает проект понятным.
3. Автотесты - это диалог с разработкой. Нашел место, где не получается написать тест - это не провал, а повод улучшить приложение вместе.
4. Индекс пригодился! Команда index: 1 в tapOn: помогла тапнуть на нужную кнопку “Сохранить”, когда их было несколько.
-—
#maestro #автотесты #mobiletesting #тестирование #структурапроекта #runflow