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.