Conjunto de testes e integração contínua do Weblate¶
Existem conjuntos de teste para a maior parte do código atual, aumente a cobertura adicionando casos de teste para qualquer nova funcionalidade e verifique se funciona.
Integração contínua¶
Current test results can be found on GitHub Actions and coverage is reported on Codecov.
Existem vários trabalhos para verificar diferentes aspectos:
Testes de unidade
Construção de documentação e links externos
Testes de migração de todas as versões com suporte
Linting de código
Verificação de configuração (garante que os arquivos dist gerados não percam nada e possam ser testados)
The configuration for the CI is in .github/workflows
directory. It
heavily uses helper scripts stored in ci
directory. The scripts can be
also executed manually, but they require several environment variables, mostly
defining Django settings file to use and test database connection. The example
definition of that is 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
A execução simples pode ser semelhante a:
source scripts/test-database.sh
./ci/run-migrate
./ci/run-test
./ci/run-docs
Teste local¶
Before running test, please ensure test dependencies are installed. This can be done by pip install -e .[test]
.
Testing using pytest¶
Antes de executar os testes, você deve coletar arquivos estáticos, pois alguns testes contam com a presença deles:
DJANGO_SETTINGS_MODULE=weblate.settings_test ./manage.py collectstatic
You can use pytest to run a testsuite locally:
pytest weblate
Running an individual test file:
pytest weblate/utils/tests/test_search.py
Testing using Django¶
Alternatively, Django built-in tests should also work:
DJANGO_SETTINGS_MODULE=weblate.settings_test ./manage.py test
Dica
Você precisará de um servidor de banco de dados (PostgreSQL) a ser usado para os testes. Por padrão, o Django cria um banco de dados separado para executar testes com o prefixo test_
, então no caso de suas configurações estarem configuradas para usar weblate
, os testes usarão o banco de dados test_weblate
. Veja Configuração de banco de dados para o Weblate para instruções de configuração.
O weblate/settings_test.py
é usado no ambiente CI também (veja Integração contínua) e pode ser ajustado usando variáveis de ambiente:
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
Antes de executar os testes, você deve coletar arquivos estáticos, pois alguns testes contam com a presença deles:
DJANGO_SETTINGS_MODULE=weblate.settings_test ./manage.py collectstatic
Você também pode especificar testes individuais para executar:
DJANGO_SETTINGS_MODULE=weblate.settings_test ./manage.py test weblate.gitexport
Dica
Os testes também podem ser executados dentro de um contêiner Docker do desenvolvedor, consulte Executando Weblate localmente no Docker.
Ver também
Veja Testing in Django para mais informações sobre a execução e escrita de testes para Django.