Skip to content

Instantly share code, notes, and snippets.

@nikitagruia-dev
Created July 10, 2019 15:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nikitagruia-dev/9fbf0e2eff62a828848da5c801ac079f to your computer and use it in GitHub Desktop.
Save nikitagruia-dev/9fbf0e2eff62a828848da5c801ac079f to your computer and use it in GitHub Desktop.
Django, MongoDB, and MongoEngine: A custom TestRunner managing mongo test database creation and cleanup.
# coding: utf-8
from django.conf import settings
from django_nose import NoseTestSuiteRunner
class MongoTestRunner(NoseTestSuiteRunner):
"""
A test runner that can be used to create, connect to, disconnect from,
and destroy a mongo test database for standard django testing.
Redefine TEST_RUNNER in settings
Example: TEST_RUNNER = 'apps.common.test_runner.MongoTestRunner'
"""
mongodb_name = f'test_{settings.MONGOENGINE_DATABASE}'
def setup_databases(self):
from mongoengine.connection import connect, disconnect
disconnect()
connect(self.mongodb_name,
host=settings.MONGOENGINE_LINK.replace('/' + settings.MONGOENGINE_DATABASE, '/' + self.mongodb_name))
print(f'Creating mongo test database: {self.mongodb_name}')
return super().setup_databases()
def teardown_databases(self, *args, **kwargs):
from mongoengine.connection import get_connection, disconnect
connection = get_connection()
connection.drop_database(self.mongodb_name)
print(f'Dropping mongo test database: {self.mongodb_name}')
disconnect()
super().teardown_databases(*args, **kwargs)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment