To run backend tests, start and attach to the backend container as described in
running-the-dev-environment.md. Once inside
the container, execute make test
or make test-parallel
to run the tests.
The tests use the config.settings.tests
configuration, which sets base
variables and ignores environment variables in the .env
file. The .env
file
is intended for production or development mode.
You can customize test settings by creating a .env.testing
file in the
backend directory. For example:
# backend/.env.testing
BASEROW_MAX_FIELD_LIMIT=1
By default, BASEROW_TESTS_SETUP_DB_FIXTURE
is considered on
in the
config.settings.tests
configuration. This means that the database will be
set up without running the migrations, but only installing the database
formulas needed for the tests. This is done to speed up the test setup
process.
If you want to run the migrations, you can run
BASEROW_TESTS_SETUP_DB_FIXTURE=off pytest
to run them all. This is useful
when you want to test the migrations and you don't care about the speed of
the test setup.
If you want to install the custom formula pgSQL functions only once and then
reuse the database between tests, you can run
BASEROW_TESTS_SETUP_DB_FIXTURE=off pytest --no-migrations --reuse-db
.
You can even omit --no-migrations
to apply any new migrations coming from
the current branch to avoid recreating the database from scratch.
To run tests outside the backend container, follow these steps:
- Create a Python virtual environment. See supported to determine the supported version of Python.
- From the backend directory, install the required packages with
pip install requirements/base.txt
andpip install requirements/dev.txt
. - Set environment variables to connect to the database. Create a
.env.testing-local
file in the backend directory. At a minimum, setDATABASE_HOST
tolocalhost
since the default value ofdb
is only valid inside the docker network.
# backend/.env.testing-local
DATABASE_HOST=localhost
- Export the
TEST_ENV_FILE
variable to specify the environment file:
export TEST_ENV_FILE='.env.testing-local'
- Run
make test
ormake test-parallel
from your shell outside the containers in the backend directory.