From 1f18782007ee4739d5570cb950074b6296e9fa8e Mon Sep 17 00:00:00 2001 From: volpino Date: Sat, 5 May 2012 16:09:04 +0200 Subject: [PATCH] test reorganized, launch them with setup.py test --- euscanwww/djeuscan/charts.py | 2 +- euscanwww/djeuscan/tests/__init__.py | 34 +++++++++++++- .../tests/{models.py => test_models.py} | 0 euscanwww/djeuscan/tests/test_views.py | 14 ++++++ euscanwww/djeuscan/tests/views.py | 12 ----- euscanwww/euscanwww/settings.py | 1 - euscanwww/euscanwww/tests.py | 45 ------------------- euscanwww/runtests.py | 30 +++++++++++++ setup.py | 9 +++- 9 files changed, 85 insertions(+), 62 deletions(-) rename euscanwww/djeuscan/tests/{models.py => test_models.py} (100%) create mode 100644 euscanwww/djeuscan/tests/test_views.py delete mode 100644 euscanwww/djeuscan/tests/views.py delete mode 100644 euscanwww/euscanwww/tests.py create mode 100644 euscanwww/runtests.py diff --git a/euscanwww/djeuscan/charts.py b/euscanwww/djeuscan/charts.py index 8c9bf50..dc5c325 100644 --- a/euscanwww/djeuscan/charts.py +++ b/euscanwww/djeuscan/charts.py @@ -6,7 +6,7 @@ import pylab from django.db.models import F -from euscanwww import settings +from django.conf import settings from djeuscan.models import Package diff --git a/euscanwww/djeuscan/tests/__init__.py b/euscanwww/djeuscan/tests/__init__.py index 378409d..79bc9db 100644 --- a/euscanwww/djeuscan/tests/__init__.py +++ b/euscanwww/djeuscan/tests/__init__.py @@ -1,2 +1,32 @@ -from .models import * -from .views import * +from urllib import urlencode + +from django.utils import unittest +from django.test.client import Client +from django.core.urlresolvers import reverse + + +class SystemTestCase(unittest.TestCase): + """ + Base class for system tests + """ + + def setUp(self): + self.client = Client() + + def get(self, url_name, *args, **kwargs): + param = kwargs.pop("param", None) + if param: + url = "%s?%s" % (reverse(url_name, args=args, kwargs=kwargs), + urlencode(param)) + else: + url = reverse(url_name, args=args, kwargs=kwargs) + return self.client.get(url) + + def post(self, url_name, *args, **kwargs): + data = kwargs.pop("data", {}) + url = reverse(url_name, args=args, kwargs=kwargs) + return self.client.post(url, data) + + +from test_models import * +from test_views import * diff --git a/euscanwww/djeuscan/tests/models.py b/euscanwww/djeuscan/tests/test_models.py similarity index 100% rename from euscanwww/djeuscan/tests/models.py rename to euscanwww/djeuscan/tests/test_models.py diff --git a/euscanwww/djeuscan/tests/test_views.py b/euscanwww/djeuscan/tests/test_views.py new file mode 100644 index 0000000..e241501 --- /dev/null +++ b/euscanwww/djeuscan/tests/test_views.py @@ -0,0 +1,14 @@ +from euscanwww.djeuscan.tests import SystemTestCase + + +class NavigationTest(SystemTestCase): + """ + Test main pages + """ + + def test_index(self): + """ + Test index + """ + response = self.get("index") + self.assertEqual(response.status_code, 200) diff --git a/euscanwww/djeuscan/tests/views.py b/euscanwww/djeuscan/tests/views.py deleted file mode 100644 index 89ae0ae..0000000 --- a/euscanwww/djeuscan/tests/views.py +++ /dev/null @@ -1,12 +0,0 @@ -""" -tests for models -""" - -from django.utils import unittest -from django.test.client import RequestFactory - -from djeuscan.views import index - - -class ViewsTests(unittest.TestCase): - pass diff --git a/euscanwww/euscanwww/settings.py b/euscanwww/euscanwww/settings.py index 34b7766..0365bc7 100644 --- a/euscanwww/euscanwww/settings.py +++ b/euscanwww/euscanwww/settings.py @@ -207,4 +207,3 @@ except ImportError, ex: ("settings.py: error importing local settings file:\n" + \ "\t%s\n" + \ "Do you have a local_settings.py module?\n") % str(ex)) - raise diff --git a/euscanwww/euscanwww/tests.py b/euscanwww/euscanwww/tests.py deleted file mode 100644 index 597e5b0..0000000 --- a/euscanwww/euscanwww/tests.py +++ /dev/null @@ -1,45 +0,0 @@ -""" -System tests for euscanwww -""" - -from urllib import urlencode - -from django.utils import unittest -from django.test.client import Client -from django.core.urlresolvers import reverse - - -class SystemTestCase(unittest.TestCase): - """ - Base class for system tests - """ - - def setUp(self): - self.client = Client() - - def get(self, url_name, *args, **kwargs): - param = kwargs.pop("param", None) - if param: - url = "%s?%s" % (reverse(url_name, args=args, kwargs=kwargs), - urlencode(param)) - else: - url = reverse(url_name, args=args, kwargs=kwargs) - return self.client.get(url) - - def post(self, url_name, *args, **kwargs): - data = kwargs.pop("data", {}) - url = reverse(url_name, args=args, kwargs=kwargs) - return self.client.post(url, data) - - -class NavigationTest(SystemTestCase): - """ - Test main pages - """ - - def test_index(self): - """ - Test index - """ - response = self.get("index") - self.assertEqual(response.status_code, 200) diff --git a/euscanwww/runtests.py b/euscanwww/runtests.py new file mode 100644 index 0000000..a1edf91 --- /dev/null +++ b/euscanwww/runtests.py @@ -0,0 +1,30 @@ +""" +Runner for tests +""" + +import sys +import os +from os.path import dirname, abspath +from django.conf import settings + +settings.configure( + DATABASES={ + 'default': {'ENGINE': 'django.db.backends.sqlite3', 'NAME': ':memory;'} + }, + INSTALLED_APPS=['euscanwww', 'djeuscan'], + ROOT_URLCONF='euscanwww.euscanwww.urls', + EUSCAN_ROOT=os.path.dirname(os.path.dirname(os.path.abspath(__file__))), +) + + +def runtests(): + import django.test.utils + + parent = dirname(abspath(__file__)) + sys.path.insert(0, parent) + + runner_class = django.test.utils.get_runner(settings) + test_runner = runner_class(verbosity=1, interactive=True) + failures = test_runner.run_tests(['djeuscan']) + + sys.exit(failures) diff --git a/setup.py b/setup.py index 4423562..9cffb6c 100755 --- a/setup.py +++ b/setup.py @@ -68,6 +68,10 @@ packages = [ if '__init__.py' in files ] +tests_require = [ + 'factory_boy', +] + setup( name='euscan', version=__version__, @@ -82,7 +86,7 @@ setup( ('master' if __version__ == '9999' else ('euscan-%s' % __version__)) ), install_requires=['Django==1.4', 'django-annoying', 'South', - 'django-piston', 'matplotlib', 'BeautifulSoup'], + 'django-piston', 'BeautifulSoup'], package_dir={'': 'pym'}, packages=packages, package_data={}, @@ -94,4 +98,7 @@ setup( cmdclass={ 'set_version': set_version, }, + tests_require=tests_require, + extras_require={'test': tests_require}, + test_suite='euscanwww.runtests.runtests', )