Test Environment Settings#
Override Settings#
Override Django settings easily in tests/conftest.py
.
Add your setting to TEST_SETTINGS
.
This settings snippet is from Speed Up Your Django Tests by Adam Chainz.
The book is very well written and is a wealth of knowledge.
You can purchase Speed Up Your Django Tests
from here.
1from django.test.utils import override_settings
2
3@pytest.fixture(scope="session", autouse=True)
4def test_settings():
5"""Provide settings override for tests"""
6with override_settings(**TEST_SETTINGS):
7 yield
8
9
10TEST_SETTINGS = {
11 "PAGINATION_COUNT": 10,
12
13}
Databases#
By default, SQLite is used in the test environment to make it easier for
Quick local development without the need to set up Postgress and
New Django users.
Using PostgreSQL#
By default PostgreSQL is our preferred option for Production.
If you wish to test using the same environment configuration as production, you can make changes to /.env/.testing.
Change line 7 to
other
.Add your PostgresSQL connection string to line 8, or
Create an environment variable DB_URL with your connection string, See here for a tutorial about creating environment variables.
1# Testing Environment ENV Keys
2
3# Testing Environment Django
4TESTING_ALLOWED_HOSTS=*
5# Testing database options: sqlite3, other.
6# If using other, a TESTING_DATABASE_URL connection string must be supplied.
7TESTING_DJANGO_DATABASE=sqlite3
8TESTING_DATABASE_URL=""
9TESTING_DJANGO_DEBUG=False
10TESTING_DJANGO_INTERNAL_IPS=[]
11TESTING_DJANGO_LOG_FILE='logging/rotating_testing.log'
12TESTING_DJANGO_LOGGING_LEVEL='DEBUG'
13TESTING_DJANGO_LOGGING_MAIL_ADMINS='ERROR'
Warning
DB_URL can conflict with your production DB if your testing machine and production machine are the same.
Other Databases#
In addition to making the changes in the Using PostgreSQL
section above the
following changes need to be made.
Three dependency files need to be updated.
/config/requirements/test.txt
/config/requirements/staging.txt
/config/requirements/production.txt
With these changes.
Line 3 and line 4 must be commented out or deleted.
Add your preferred database’s dependencies in these files.
1coverage==6.2
2dj-inmemorystorage==2.1.0
3psycopg2==2.9.3 # This version should be used in production
4# psycopg2-binary # This version is ok for Development and Testing
5pytest==6.2.5
6pytest-django==4.5.2
7pytest-reverse==1.3.0
8pytest-xdist==2.5.0
9tblib==1.7.0
10tox==3.24.5
Follow any other instructions from your DB vendor for integration with Django.