Refactored tests to use django-discover-runner and not an own testproject anymore.

This commit is contained in:
Jannis Leidel 2013-02-22 14:58:41 +01:00
parent a8b158ad1c
commit e144e4336f
16 changed files with 92 additions and 130 deletions

View file

@ -34,5 +34,5 @@ setup(
packages=find_packages(exclude=['tests']),
include_package_data=True,
test_suite='tests.runtests.main',
test_requires=['django-discover-runner'],
)

View file

@ -1,23 +1,15 @@
#!/usr/bin/env python
"""Borrowed from Carl Meyer's django-adminfiles."""
import os
import sys
from django.core.management import call_command
testapp_dir = os.path.dirname(os.path.abspath(__file__))
constance_dir = os.path.dirname(testapp_dir)
sys.path.insert(0, constance_dir)
sys.path.insert(0, testapp_dir)
os.environ['DJANGO_SETTINGS_MODULE'] = 'tests.settings'
os.environ['DJANGO_SETTINGS_MODULE'] = 'testproject.settings'
from django.test.simple import DjangoTestSuiteRunner
def main():
runner = DjangoTestSuiteRunner()
failures = runner.run_tests(['test_app'], verbosity=1, interactive=True)
sys.exit(failures)
result = call_command('test', 'tests', verbosity=2)
sys.exit(result)
if __name__ == '__main__':
main()

View file

@ -1,13 +1,21 @@
# -*- encoding: utf-8 -*-
import os
from datetime import datetime, date, time
from decimal import Decimal
# using the parent directory as the base for the test discovery
TEST_DISCOVER_TOP_LEVEL = os.path.join(os.path.dirname(__file__), '..')
TEST_RUNNER = 'discover_runner.DiscoverRunner'
SECRET_KEY = 'cheese'
DATABASE_ENGINE = 'sqlite3'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': ':memory:',
}
}
@ -16,16 +24,15 @@ INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.admin',
'south',
'constance',
'constance.backends.database',
'testproject.test_app',
)
ROOT_URLCONF = 'testproject.urls'
ROOT_URLCONF = 'tests.urls'
CONSTANCE_CONNECTION_CLASS = 'testproject.test_app.redis_mockup.Connection'
CONSTANCE_CONNECTION_CLASS = 'tests.redis_mockup.Connection'
CONSTANCE_CONFIG = {
'INT_VALUE': (1, 'some int'),

View file

@ -1,20 +1,8 @@
# -*- encoding: utf-8 -*-
import sys
from datetime import datetime, date, time
from decimal import Decimal
from django.test import TestCase
from django.conf import settings
from django.contrib import admin
from django.contrib.auth.models import User
from constance import settings
from constance.admin import Config
# Use django RequestFactory later on
from testproject.test_app.tests.helpers import FakeRequest
class TestStorage(object):
@ -71,24 +59,7 @@ class TestStorage(object):
pass
self.assertEquals(type(e), AttributeError)
class TestRedis(TestCase, TestStorage):
def setUp(self):
self.old_backend = settings.BACKEND
settings.BACKEND = 'constance.backends.redisd.RedisBackend'
del sys.modules['constance']
from constance import config
config._backend._rd.clear()
def tearDown(self):
del sys.modules['constance']
from constance import config
config._backend._rd.clear()
settings.BACKEND = self.old_backend
import constance
constance.config = Config()
def testMissingValues(self):
def test_missing_values(self):
from constance import config
# set some values and leave out others
@ -110,30 +81,3 @@ class TestRedis(TestCase, TestStorage):
self.assertEquals(config.FLOAT_VALUE, 3.1415926536) # this should be the default value
self.assertEquals(config.DATE_VALUE, date(2001, 12, 20))
self.assertEquals(config.TIME_VALUE, time(1, 59, 0))
class TestDatabase(TestCase, TestStorage):
def setUp(self):
self.old_backend = settings.BACKEND
settings.BACKEND = 'constance.backends.database.DatabaseBackend'
def tearDown(self):
del sys.modules['constance']
settings.BACKEND = self.old_backend
import constance
constance.config = Config()
class TestAdmin(TestCase):
model = Config
def setUp(self):
self.user = User.objects.create_superuser('admin', 'nimda', 'a@a.cz')
self.options = admin.site._registry[self.model]
self.fake_request = FakeRequest(user=self.user)
self.client.login(username=self.user, password='nimda')
def test_changelist(self):
response = self.options.changelist_view(self.fake_request, {})
self.assertEquals(response.status_code, 200)

20
tests/test_admin.py Normal file
View file

@ -0,0 +1,20 @@
from django.contrib import admin
from django.contrib.auth.models import User
from django.test import TestCase, RequestFactory
from constance.admin import Config
class TestAdmin(TestCase):
model = Config
def setUp(self):
self.rf = RequestFactory()
self.user = User.objects.create_superuser('admin', 'nimda', 'a@a.cz')
self.options = admin.site._registry[self.model]
self.client.login(username=self.user, password='nimda')
def test_changelist(self):
request = self.rf.get('/admin/constance/config/')
response = self.options.changelist_view(request, {})
self.assertEquals(response.status_code, 200)

21
tests/test_database.py Normal file
View file

@ -0,0 +1,21 @@
import sys
from django.test import TestCase
from constance.config import Config
from constance import settings
from .storage import TestStorage
class TestDatabase(TestCase, TestStorage):
def setUp(self):
self.old_backend = settings.BACKEND
settings.BACKEND = 'constance.backends.database.DatabaseBackend'
def tearDown(self):
del sys.modules['constance']
settings.BACKEND = self.old_backend
import constance
constance.config = Config()

26
tests/test_redis.py Normal file
View file

@ -0,0 +1,26 @@
import sys
from django.test import TestCase
from constance.config import Config
from constance import settings
from .storage import TestStorage
class TestRedis(TestCase, TestStorage):
def setUp(self):
self.old_backend = settings.BACKEND
settings.BACKEND = 'constance.backends.redisd.RedisBackend'
del sys.modules['constance']
from constance import config
config._backend._rd.clear()
def tearDown(self):
del sys.modules['constance']
from constance import config
config._backend._rd.clear()
settings.BACKEND = self.old_backend
import constance
constance.config = Config()

View file

@ -1 +0,0 @@
from testproject.test_app.tests.test_config import *

View file

@ -1,41 +0,0 @@
import datetime
from django.core.handlers.wsgi import WSGIRequest
class FakeRequest(WSGIRequest):
def __init__(self, user=None, meta=None, environ=None, cookies=None):
if not environ:
environ = {
'PATH_INFO': '/',
'QUERY_STRING': '',
'REMOTE_ADDR': '127.0.0.1',
'REQUEST_METHOD': 'GET',
'SCRIPT_NAME': '',
'SERVER_NAME': 'testserver',
'SERVER_PORT': '80',
'SERVER_PROTOCOL': 'HTTP/1.1',
'wsgi.version': (1,0),
'wsgi.url_scheme': 'http',
'wsgi.errors': [],
'wsgi.multiprocess': True,
'wsgi.multithread': False,
'wsgi.run_once': False,
'wsgi.input': None,
}
super(FakeRequest, self).__init__(environ)
if user:
self.user = user
if meta:
self.META.update(meta)
if cookies:
self.COOKIES.update(cookies)
self.xnow = datetime.datetime.now()
@classmethod
def from_test_response(cls, response, *args, **kwargs):
return cls(environ=response.request, *args, **kwargs)

View file

@ -1,12 +0,0 @@
from django.contrib import admin
from django.conf.urls.defaults import patterns, include
urlpatterns = patterns('',
# Uncomment the admin/doc line below and add 'django.contrib.admindocs'
# to INSTALLED_APPS to enable admin documentation:
# (r'^admin/doc/', include('django.contrib.admindocs.urls')),
(r'^admin/', include(admin.site.urls)),
)

6
tests/urls.py Normal file
View file

@ -0,0 +1,6 @@
from django.contrib import admin
from django.conf.urls.defaults import patterns, include
urlpatterns = patterns('',
(r'^admin/', include(admin.site.urls)),
)