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:
pip install requirements/base.txt and pip install requirements/dev.txt..env.testing-local file in the backend directory. At a minimum, set
DATABASE_HOST to localhost since the default value of db is only valid
inside the docker network.# backend/.env.testing-local
DATABASE_HOST=localhost
TEST_ENV_FILE variable to specify the environment file:export TEST_ENV_FILE='.env.testing-local'
make test or make test-parallel from your shell outside the
containers in the backend directory.