Комплекс тестування Weblate і неперервна інтеграція¶
Комплекси тестування існують для більшої частини поточного коду. Збільште покриття додаванням тестувань для будь-яких нових функціональних можливостей і перевірте, чи працює тестування.
Неперервна інтеграція¶
Із поточними результатами тестування можна ознайомитися на сторінці GitHub Actions і покриття зі звіту Codecov.
Передбачено декілька завдань для перевірки різних аспектів:
Перевірка модулів
Збирання документації та зовнішні посилання
Тестування перенесення для всіх підтримуваних випусків
Аналіз коду
Перевірка конфігурації (забезпечує наявність у створених файлах усіх даних та можливість їх тестування)
Налаштування для системи неперервної інтеграції зберігаються у каталозі .github/workflows
. Система неперервної інтеграції значною частиною використовує допоміжні скрипти, які зберігаються у каталозі ci
. Ці скрипти може бути виконано вручну, але для їхньої роботи потрібні декілька змінних середовища, які, здебільшого, визначають файл параметрів Django, яким слід скористатися, та параметр з’єднання із базою даних. Приклад визначення цих змінних можна знайти у файлі scripts/test-database.sh
:
# Copyright © Michal Čihař <michal@weblate.org>
#
# SPDX-License-Identifier: GPL-3.0-or-later
# Simple way to configure test database from environment
# shellcheck shell=sh
# Database backend to use postgresql / mysql / mariadb
export CI_DATABASE="${1:-postgresql}"
# Database server configuration
export CI_DB_USER=weblate
export CI_DB_PASSWORD=weblate
export CI_DB_HOST=127.0.0.1
# Django settings module to use
export DJANGO_SETTINGS_MODULE=weblate.settings_test
Просте виконання може виглядати так:
. scripts/test-database.sh
./ci/run-migrate
./ci/run-test
./ci/run-docs
Локальне тестування¶
Перш ніж запускати тест, будь ласка, переконайтеся, що встановлено залежності тесту. Зробити це можна за допомогою команди pip install -e .[test].
Testing using pytest¶
Перш ніж запускати тести, вам слід зібрати статичні файли, оскільки робота деяких тестів залежить від наявності цих файлів:
DJANGO_SETTINGS_MODULE=weblate.settings_test ./manage.py collectstatic
You can use pytest to run a testsuite locally:
pytest weblate
Running an individual test file:
pytest weblate/utils/tests/test_search.py
Testing using Django¶
Alternatively, Django built-in tests should also work:
DJANGO_SETTINGS_MODULE=weblate.settings_test ./manage.py test
Підказка
Для тестів вам знадобиться сервер бази даних (PostgreSQL). Типово, Django створює окрему базу даних для запуску тестів. У назві цієї бази даних міститься префікс test_
. Отже, якщо параметри налаштовано на використання weblate
, для тестування буде використано базу даних test_weblate
. Див. Налаштування бази даних для Weblate, щоб дізнатися більше про налаштовування.
Файл weblate/settings_test.py
також використовується у середовищі неперервної інтеграції (див. Неперервна інтеграція). Його роботу можна скоригувати за допомогою змінних середовища:
export CI_DATABASE=postgresql
export CI_DB_USER=weblate
export CI_DB_PASSWORD=weblate
export CI_DB_HOST=127.0.0.1
export CI_DB_PORT=60000
export DJANGO_SETTINGS_MODULE=weblate.settings_test
Перш ніж запускати тести, вам слід зібрати статичні файли, оскільки робота деяких тестів залежить від наявності цих файлів:
DJANGO_SETTINGS_MODULE=weblate.settings_test ./manage.py collectstatic
Ви також можете вказати окремі тести, які слід виконати:
DJANGO_SETTINGS_MODULE=weblate.settings_test ./manage.py test weblate.gitexport
Підказка
Тести також можна запускати у межах контейнера docker розробника, див. Запуск Weblate локально у Docker.
Дивись також
Див. Testing in Django, щоб дізнатися більше про запуск і написання тестів для Django.