Weblate 测试套件与持续集成¶
测试套件存在于多数当前代码,通过为任何新的功能添加测试情况来扩大覆盖范围,并确认其正常工作。
持续集成¶
当前的测试结果可以在 GitHub Actions 上找到,覆盖范围在 Codecov 上进行报告。
有几项工作来确认不同的方面:
单元测试
文档构建与外部链接
来自所有支持的发布版本的合并测试
代码整理
设置确认(确保生成的 dist 文件不丢失任何内容,并可以测试)
CI 的配置在 .github/workflows
目录中。它重度使用了 ci
目录中的帮助脚本。脚本还可以手动执行,但它们需要一些环境变量,多数用来定义 Django 设置要使用的文件和数据库连接。它的示例定义在 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
简单的执行看起来可以像这样:
. scripts/test-database.sh
./ci/run-migrate
./ci/run-test
./ci/run-docs
本地测试¶
运行测试前,请确保测试依赖已安装。可以通过 pip install -e .[test] 进行确认。
Testing using pytest¶
运行测试前,应该收集静态文件,因为一些测试在出现时依赖于它们:
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
提示
您会需要使用数据库(PostgreSQL)服务器来检测。Django 默认新建另外的数据库,以 test_
前缀来运行测试,因此在您的设置配置使用 weblate
的情况下,测试会使用 test_weblate
数据库。设置的指示请参见 Weblate 的数据库设置。
weblate/settings_test.py
也用在 CI 环境中(请参见 持续集成),并且可以使用环境变量调整:
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
运行测试前,应该收集静态文件,因为一些测试在出现时依赖于它们:
DJANGO_SETTINGS_MODULE=weblate.settings_test ./manage.py collectstatic
您也可以指定要运行的各自测试:
DJANGO_SETTINGS_MODULE=weblate.settings_test ./manage.py test weblate.gitexport
提示
测试也可以在开发者 docker 容器内执行,请参见 在 Docker 中本地运行 Weblate。
参见
运行并为 Django写测试的更多信息请参见 Testing in Django。