Driver-agnostic core for tquality test automation (Selenium, Appium, WinAppDriver, etc.)
Project description
tquality-py-core
Независимое от драйвера ядро для автоматизации тестирования tquality. Предоставляет основу, на которой строятся пакеты, специфичные для драйверов (Selenium, Appium, WinAppDriver).
Компоненты
BaseConfig- конфигурация на основе pydantic-settings с загрузкой изconfig.json5(с поддержкой комментариев и висячих запятых через json5), переменных окружения и dotenv. Для добавления полей, специфичных для драйвера, используется наследование.Logger,LogLevel,step- журналирование в контексте одного теста с интеграцией allure. Уровни шагов:NORMAL,CRITICAL(снимок экрана в конце) иWITH_SCREENCAST(видеозапись шага через подключаемый поставщик).BaseForm- базовый класс для страниц и форм (страница - форма с полным контекстом).BaseElement- абстрактный интерфейс, который реализуют элементы, специфичные для драйвера.StringUtils- вспомогательные функции разбора строк.
Не входит в ядро
- Конкретная интеграция с драйверами (Selenium, Appium, WinAppDriver) - живёт в отдельных пакетах, зависящих от этого ядра.
- Типы элементов (
Button,Input,Labelи т. п.) - реализации, специфичные для драйвера, живут рядом с интеграцией драйвера. - Настройка контейнера внедрения зависимостей - каждый использующий пакет
собирает свой контейнер через
dependency-injector, регистрируя службы ядра и службы, специфичные для драйвера.
Контракт интеграции
Использующие пакеты должны:
- Наследовать
BaseConfigс полями, специфичными для драйвера. - Зарегистрировать функцию получения
Loggerчерезset_logger_resolver(lambda: YourServices.logger()), гдеYourServices- контейнер использующего пакета. Это нужно, чтобыstep()из ядра находил активныйLoggerв любом модуле. - При необходимости реализовать
ScreenshotProvider/ScreencastProviderи внедрить их вLoggerчерез контейнер, чтобы шаги уровняCRITICALприкрепляли снимки экрана, аWITH_SCREENCAST- видеозапись (конкретный формат - на стороне поставщика, например webm в Selenium) к отчёту allure. Без поставщиков шаги проходят с предупреждением в журнал. - Предоставить конкретные подклассы
BaseElementс логикой поиска и ожидания.
Требования
- Python 3.12+
Установка
Пакет публикуется в публичный PyPI. Это рекомендуемый способ установки для всех потребителей:
pip install tquality-py-core
или с использованием uv:
uv add tquality-py-core
В pyproject.toml потребителя:
dependencies = [
"tquality-py-core>=0.1.3",
]
Альтернатива: установка из GitHub-зеркала
Если нужна сборка из исходников (например, для проверки коммита, ещё не вышедшего в релиз), пакет также доступен из публичного GitHub-зеркала по тегу:
uv pip install "tquality-py-core @ git+https://github.com/Tquality-ru/tquality-py-core.git@v0.1.3"
В этом случае hatch у потребителя требует явного разрешения
direct-references:
[tool.hatch.metadata]
allow-direct-references = true
CLI
После установки доступна команда tquality-config:
tquality-config init # сгенерировать config.json5 со значениями по умолчанию
tquality-config schema # сгенерировать schema/config.schema.json (для сопровождающих)
Сгенерированный config.json5 включает ссылку на JSON-схему, опубликованную
через jsDelivr. Адрес автоматически привязан к версии пакета: при установке
выпущенной версии (0.1.3) → @v0.1.3, при установке невыпущенной версии
(+g..., .dev) → @master:
{
"$schema": "https://cdn.jsdelivr.net/gh/Tquality-ru/tquality-py-core@v0.1.3/schema/config.schema.json",
// Комментарии поддерживаются - можно пояснить выбор значения.
"base_url": "http://localhost",
"default_timeout": 10.0,
"log_dir": "logs",
"highlight_elements": false,
}
Редакторы с поддержкой JSON Schema (VS Code, JetBrains IDE) автоматически
подсказывают доступные поля и проверяют значения. Синтаксис jsonc/json5
позволяет оставлять комментарии // и /* */ и висячие запятые.
Разработка
См. CONTRIBUTING.md для инструкций по настройке окружения разработчика, установке перехватчиков git и проверке типов mypy.
CI/CD
GitLab CI запускает две проверки на каждом MR и на master:
mypy- строгий режим проверки типов.tests- запуск pytest с отчётом JUnit.
При публикации тега git вида vX.Y.Z:
publish-pypi- сборка (версия берётся из тега черезhatch-vcs) и загрузка пакета в публичный PyPI. Требует переменнуюPYPI_TOKENв настройках CI/CD (protected, masked).publish- дублирующая публикация в GitLab Package Registry (внутреннее зеркало).mirror-to-github- master и сам тег отправляются в https://github.com/Tquality-ru/tquality-py-core (веткиfeature/*на зеркало не копируются).
История версий - в CHANGELOG.md.
Зачем это существует
Отделяет универсальные шаблоны (журналирование, объекты страниц, загрузка конфигурации) от кода, специфичного для драйвера. Appium и WinAppDriver повторно используют ту же модель объектов страниц, отчётность по шагам и конвейер конфигурации без обязательной зависимости от Selenium.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tquality_py_core-0.1.4.tar.gz.
File metadata
- Download URL: tquality_py_core-0.1.4.tar.gz
- Upload date:
- Size: 25.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
500957bdda3a06aafc07ca71edfbfed2f7ef492bed9868494b5d1ce8a5853e39
|
|
| MD5 |
080375fd3b7d7dd3ad6ade40c1117303
|
|
| BLAKE2b-256 |
e1cbf029c7820393a6b70f6158035fdc3ee78fe5bc3f04c5e35c4081aa9b8aa5
|
File details
Details for the file tquality_py_core-0.1.4-py3-none-any.whl.
File metadata
- Download URL: tquality_py_core-0.1.4-py3-none-any.whl
- Upload date:
- Size: 24.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6d8ff2475fbc1f5a0f07984893c542342935224636edc63abc18ab42e7a93bb5
|
|
| MD5 |
20cb5988560cc92cbc462ba1a1aed477
|
|
| BLAKE2b-256 |
7eaf5014fffa345e5a1805e94c47e090098d1339f287675c3bb63875deee32ea
|