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

Os resultados do teste atuais podem ser encontrados no GitHub Actions e a cobertura é relatada no 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)

A configuração do CI está no diretório .github/workflows. Ele usa muito scripts auxiliares armazenados no diretório ci. Os scripts também podem ser executados manualmente, mas eles requerem várias variáveis de ambiente, principalmente definindo o arquivo de configurações do Django para usar e conexão com o banco de dados de teste. A definição de exemplo disso está em 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

Antes de executar o teste, certifique-se de que as dependências de teste estejam instaladas. Isso pode ser feito por pip install -e .[test].

Testando usando 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

Você pode usar pytest para executar um conjunto de testes localmente:

pytest weblate

Executando um arquivo de teste individual:

pytest weblate/utils/tests/test_search.py

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. Consulte 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 (consulte 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

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

Consulte Testando em Django para mais informações sobre a execução e escrita de testes para Django.