Комплекс тестування 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

Локальне тестування

Before running test, please ensure test dependencies are installed. This can be done by pip install -e .[test].

Щоб запустити комплекс тестів локально, скористайтеся такими командами:

DJANGO_SETTINGS_MODULE=weblate.settings_test ./manage.py test

Підказка

Для тестів вам знадобиться сервер бази даних (PostgreSQL). Типово, Django створює окрему базу даних для запуску тестів. У назві цієї бази даних міститься префікс test_. Отже, якщо параметри налаштовано на використання weblate, для тестування буде використано базу даних test_weblate. Див. Налаштування бази даних для Weblate, щоб дізнатися більше про налаштовування.

Файл weblate/settings_test.py також використовується у середовищі неперервної інтеграції (див. Неперервна інтеграція). Його роботу можна скоригувати за допомогою змінних середовища:

# 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

Перш ніж запускати тести, вам слід зібрати статичні файли, оскільки робота деяких тестів залежить від наявності цих файлів:

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.