Created
July 10, 2019 15:07
-
-
Save gruia-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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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