diff options
| author | Moritz Sichert <moritz.sichert@googlemail.com> | 2015-06-10 22:57:51 +0200 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2015-06-12 17:44:54 -0400 |
| commit | 296919e7a58c21ff0325de8c747dc2dc8960104e (patch) | |
| tree | 085278b68130a6127b7f02200ebb3c742d05317a /tests | |
| parent | e93e0c03b28137e26f9249e0b7c458b0d667a74e (diff) | |
Fixed #24965 -- Made LiveServerTestCase.live_server_url accessible from class
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/servers/tests.py | 11 | ||||
| -rw-r--r-- | tests/utils_tests/test_decorators.py | 40 |
2 files changed, 46 insertions, 5 deletions
diff --git a/tests/servers/tests.py b/tests/servers/tests.py index e84b8788c0..3ba80cc23d 100644 --- a/tests/servers/tests.py +++ b/tests/servers/tests.py @@ -11,6 +11,7 @@ from django.core.exceptions import ImproperlyConfigured from django.test import LiveServerTestCase, override_settings from django.utils._os import upath from django.utils.http import urlencode +from django.utils.six import text_type from django.utils.six.moves.urllib.error import HTTPError from django.utils.six.moves.urllib.request import urlopen @@ -71,6 +72,9 @@ class LiveServerAddress(LiveServerBase): else: del os.environ['DJANGO_LIVE_TEST_SERVER_ADDRESS'] + # put it in a list to prevent descriptor lookups in test + cls.live_server_url_test = [cls.live_server_url] + @classmethod def tearDownClass(cls): # skip it, as setUpClass doesn't call its parent either @@ -87,10 +91,9 @@ class LiveServerAddress(LiveServerBase): finally: super(LiveServerAddress, cls).tearDownClass() - def test_test_test(self): - # Intentionally empty method so that the test is picked up by the - # test runner and the overridden setUpClass() method is executed. - pass + def test_live_server_url_is_class_property(self): + self.assertIsInstance(self.live_server_url_test[0], text_type) + self.assertEqual(self.live_server_url_test[0], self.live_server_url) class LiveServerViews(LiveServerBase): diff --git a/tests/utils_tests/test_decorators.py b/tests/utils_tests/test_decorators.py index 10531937ad..6135eb1994 100644 --- a/tests/utils_tests/test_decorators.py +++ b/tests/utils_tests/test_decorators.py @@ -2,7 +2,7 @@ from django.http import HttpResponse from django.template import engines from django.template.response import TemplateResponse from django.test import RequestFactory, SimpleTestCase -from django.utils.decorators import decorator_from_middleware +from django.utils.decorators import classproperty, decorator_from_middleware class ProcessViewMiddleware(object): @@ -107,3 +107,41 @@ class DecoratorFromMiddlewareTests(SimpleTestCase): self.assertTrue(getattr(request, 'process_response_reached', False)) # Check that process_response saw the rendered content self.assertEqual(request.process_response_content, b"Hello world") + + +class ClassPropertyTest(SimpleTestCase): + def test_getter(self): + class Foo(object): + foo_attr = 123 + + def __init__(self): + self.foo_attr = 456 + + @classproperty + def foo(cls): + return cls.foo_attr + + class Bar(object): + bar = classproperty() + + @bar.getter + def bar(cls): + return 123 + + self.assertEqual(Foo.foo, 123) + self.assertEqual(Foo().foo, 123) + self.assertEqual(Bar.bar, 123) + self.assertEqual(Bar().bar, 123) + + def test_override_getter(self): + class Foo(object): + @classproperty + def foo(cls): + return 123 + + @foo.getter + def foo(cls): + return 456 + + self.assertEqual(Foo.foo, 456) + self.assertEqual(Foo().foo, 456) |
