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.