Weblate testsuite en doorlopende integratie¶
Testsuites bestaan voor de meeste huidige code, verhogen dekking door toevoegen van testgevallen voor nieuwe functionaliteit, en verifiëren dat het werkt.
Doorlopende integratie¶
Huidige testresultaten zijn te vinden op GitHub Actions en de dekking wordt gerapporteerd op Codecov.
Er zijn verscheidene taken om verschillende aspecten te verifiëren:
Eenheidstesten
Bouwen van documentatie en externe koppelingen
Testen van migratie in alle ondersteunde uitgaven
Code linten
Verificatie opstelling (zorgt ervoor dat gegenereerde bestanden voor de distributie niets missen en kunnen worden getest)
De configuratie voor de CI staat in de map .github/workflows
. Het gebruikt in hoge mate hulpscripts die zijn opgeslagen in de map ci
. De scripts kunnen ook handmatig worden uitgevoerd, maar zij vereisen verscheidene omgevingsvariabelen, die meestal het te gebruiken instellingenbestand voor Django definieert en de verbinding naar de database test. De voorbeelddefinitie daarvan staat 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
De eenvoudige uitvoering kan er uitzien als:
source scripts/test-database.sh
./ci/run-migrate
./ci/run-test
./ci/run-docs
Lokaal testen¶
Zorg ervoor, voor het uitvoeren van testen, dat de afhankelijkheden voor testen zijn geïnstalleerd. Dat kan worden gedaan met pip install -e .[test]
.
Testen met pytest¶
Voorafgaande aan het testen zou u statische bestanden moeten verzamelen, omdat enkele testen erop vertrouwen dat die aanwezig zijn:
DJANGO_SETTINGS_MODULE=weblate.settings_test ./manage.py collectstatic
U kunt pytest gebruiken om een testsuite lokaal uit te voeren:
pytest weblate
Uitvoeren van een individueel testbestand:
pytest weblate/utils/tests/test_search.py
Hint
U zult een databaseserver (PostgreSQL) nodig hebben om te gebruiken voor de testen. Standaard maakt Django een afzonderlijke database, om testen mee uit te voeren, met het voorvoegsel test_
, dus in het geval uw instellingen zijn geconfigureerd om weblate
te gebruiken, zullen de testen de database test_weblate
gebruiken. Bekijk Instellingen database voor Weblate voor instructies voor het instellen.
Het bestand weblate/settings_test.py
wordt ook gebruikt in de omgeving van CI (bekijk Doorlopende integratie) en kan fijn worden afgestemd met omgevingsvariabelen:
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
Hint
De testen kunnen ook worden uitgevoerd binnen de Docker container voor ontwikkeling, bekijk Weblate lokaal in Docker uitvoeren.
Zie ook
Bekijk Testing in Django voor meer informatie over het uitvoeren en schrijven van testen voor Django.