# Running Tests ## Backend To run backend tests, start and attach to the backend container as described in [running-the-dev-environment.md](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. ### Customize Test Settings You can customize test settings by creating a `.env.testing` file in the backend directory. For example: ```env # backend/.env.testing BASEROW_MAX_FIELD_LIMIT=1 ``` ### Migrations and database setup 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. ### Running Tests Outside the Backend Container To run tests outside the backend container, follow these steps: 1. Create a Python virtual environment. See [supported](../installation/supported.md) to determine the supported version of Python. 2. From the backend directory, install the required packages with `pip install requirements/base.txt` and `pip install requirements/dev.txt`. 3. Set environment variables to connect to the database. Create a `.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. ```env # backend/.env.testing-local DATABASE_HOST=localhost ``` 4. Export the `TEST_ENV_FILE` variable to specify the environment file: ```sh export TEST_ENV_FILE='.env.testing-local' ``` 5. Run `make test` or `make test-parallel` from your shell outside the containers in the backend directory.