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 CI-Konfiguration 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.