Weblate-Testsuite und kontinuierliche Integration#
Für den größten Teil des aktuellen Codes gibt es bereits Testsuiten. Erhöhen Sie die Erfassung, indem Sie Testfälle für neue Funktionen hinzufügen, und überprüfen Sie, ob diese funktionieren.
Kontinuierliche Integration#
Aktuelle Testergebnisse sind auf GitHub Actions zu finden und die Erfassung wird auf Codecov gemeldet.
Es gibt mehrere Aufgaben, um verschiedene Aspekte zu überprüfen:
Einheitentests
Dokumentations-Build und externe Links
Migrationstests von allen unterstützten Versionen
Codeanalyse
Überprüfung der Einrichtung (stellt sicher, dass die generierten Distributionsdateien keine Fehler enthalten und getestet werden können)
Die Konfiguration für das CI befindet sich im Verzeichnis .github/workflows
. Es verwendet hauptsächlich Hilfsskripte, die im Verzeichnis ci
gespeichert sind. Die Skripte können auch manuell ausgeführt werden, benötigen aber mehrere Umgebungsvariablen, die hauptsächlich die zu verwendende Django-Einstellungsdatei und die Datenbankverbindung definieren. Die Beispiel-Definition dafür befindet sich in 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
Die einfache Ausführung kann wie folgt aussehen:
. scripts/test-database.sh
./ci/run-migrate
./ci/run-test
./ci/run-docs
Lokale Tests#
Bevor Sie den Test ausführen, bitte sicherstellen, dass die Testabhängigkeiten installiert sind. Dies kann durch pip install -r requirements-dev.txt oder pip install -e .[test] erfolgen.
Um eine Testsuite lokal auszuführen, verwenden Sie:
DJANGO_SETTINGS_MODULE=weblate.settings_test ./manage.py test
Hinweis
Sie benötigen einen Datenbankserver (PostgreSQL), der für die Tests verwendet wird. Standardmäßig erstellt Django eine separate Datenbank, um Tests mit dem Präfix test_
auszuführen. Falls Ihre Einstellungen also so konfiguriert sind, dass weblate
verwendet wird, werden die Tests die Datenbank test_weblate
verwenden. Siehe Datenbankeinrichtung für Weblate für Anweisungen zur Einrichtung.
Die weblate/settings_test.py
wird auch in der CI-Umgebung verwendet (siehe Kontinuierliche Integration) und kann mit Umgebungsvariablen angepasst werden:
# 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
Vor der Durchführung von Tests sollten Sie statische Dateien sammeln, da einige Tests auf deren Vorhandensein angewiesen sind:
DJANGO_SETTINGS_MODULE=weblate.settings_test ./manage.py collectstatic
Sie können auch einzelne Tests angeben, die durchgeführt werden sollen:
DJANGO_SETTINGS_MODULE=weblate.settings_test ./manage.py test weblate.gitexport
Hinweis
Die Tests können auch innerhalb eines Entwickler-Docker-Containers ausgeführt werden, siehe Weblate lokal in Docker ausführen.
Siehe auch
Siehe Testing in Django für weitere Informationen zum Ausführen und Schreiben von Tests für Django.