diff --git a/django/conf/__init__.py b/django/conf/__init__.py
index b00c8d5..051ab70 100644
--- a/django/conf/__init__.py
+++ b/django/conf/__init__.py
@@ -8,6 +8,7 @@ a list of all possible variables.
 
 import logging
 import os
+import sys
 import time     # Needed for Windows
 import warnings
 
@@ -56,14 +57,15 @@ class LazySettings(LazyObject):
         """
         Setup logging from LOGGING_CONFIG and LOGGING settings.
         """
-        try:
-            # Route warnings through python logging
-            logging.captureWarnings(True)
-            # Allow DeprecationWarnings through the warnings filters
-            warnings.simplefilter("default", DeprecationWarning)
-        except AttributeError:
-            # No captureWarnings on Python 2.6, DeprecationWarnings are on anyway
-            pass
+        if not sys.warnoptions:
+            try:
+                # Route warnings through python logging
+                logging.captureWarnings(True)
+                # Allow DeprecationWarnings through the warnings filters
+                warnings.simplefilter("default", DeprecationWarning)
+            except AttributeError:
+                # No captureWarnings on Python 2.6, DeprecationWarnings are on anyway
+                pass
 
         if self.LOGGING_CONFIG:
             from django.utils.log import DEFAULT_LOGGING
diff --git a/django/core/management/commands/test.py b/django/core/management/commands/test.py
index 48b330a..2b8e801 100644
--- a/django/core/management/commands/test.py
+++ b/django/core/management/commands/test.py
@@ -1,3 +1,4 @@
+import logging
 import sys
 import os
 from optparse import make_option, OptionParser
@@ -6,6 +7,7 @@ from django.conf import settings
 from django.core.management.base import BaseCommand
 from django.test.utils import get_runner
 
+
 class Command(BaseCommand):
     option_list = BaseCommand.option_list + (
         make_option('--noinput',
@@ -57,6 +59,21 @@ class Command(BaseCommand):
                             version=self.get_version(),
                             option_list=options)
 
+    def execute(self, *args, **options):
+        if int(options['verbosity']) > 0:
+            # ensure that deprecation warnings are displayed during testing
+            # the following state is assumed:
+            # logging.capturewarnings is true
+            # a "default" level warnings filter has been added for
+            # DeprecationWarning. See django.conf.LazySettings._configure_logging
+            logger = logging.getLogger('py.warnings')
+            handler = logging.StreamHandler()
+            logger.addHandler(handler)
+        super(Command, self).execute(*args, **options)
+        if int(options['verbosity']) > 0:
+            # remove the testing-specific handler
+            logger.removeHandler(handler)
+
     def handle(self, *test_labels, **options):
         from django.conf import settings
         from django.test.utils import get_runner
diff --git a/django/test/simple.py b/django/test/simple.py
index 8faf1e4..bf0219d 100644
--- a/django/test/simple.py
+++ b/django/test/simple.py
@@ -1,4 +1,3 @@
-import logging
 import unittest as real_unittest
 
 from django.conf import settings
@@ -366,19 +365,7 @@ class DjangoTestSuiteRunner(object):
         self.setup_test_environment()
         suite = self.build_suite(test_labels, extra_tests)
         old_config = self.setup_databases()
-        if self.verbosity > 0:
-            # ensure that deprecation warnings are displayed during testing
-            # the following state is assumed:
-            # logging.capturewarnings is true
-            # a "default" level warnings filter has been added for
-            # DeprecationWarning. See django.conf.LazySettings._configure_logging
-            logger = logging.getLogger('py.warnings')
-            handler = logging.StreamHandler()
-            logger.addHandler(handler)
         result = self.run_suite(suite)
-        if self.verbosity > 0:
-            # remove the testing-specific handler
-            logger.removeHandler(handler)
         self.teardown_databases(old_config)
         self.teardown_test_environment()
         return self.suite_result(suite, result)
diff --git a/tests/regressiontests/test_runner/deprecation_app/tests.py b/tests/regressiontests/test_runner/deprecation_app/tests.py
index e676c3e..6dee088 100644
--- a/tests/regressiontests/test_runner/deprecation_app/tests.py
+++ b/tests/regressiontests/test_runner/deprecation_app/tests.py
@@ -2,6 +2,8 @@ import warnings
 
 from django.test import TestCase
 
+warnings.warn("module-level warning from deprecation_app", DeprecationWarning)
+
 class DummyTest(TestCase):
     def test_warn(self):
         warnings.warn("warning from test", DeprecationWarning)
diff --git a/tests/regressiontests/test_runner/tests.py b/tests/regressiontests/test_runner/tests.py
index 5df421c..b5e4a1d 100644
--- a/tests/regressiontests/test_runner/tests.py
+++ b/tests/regressiontests/test_runner/tests.py
@@ -298,7 +298,8 @@ class DeprecationDisplayTest(AdminScriptTestCase):
     def test_runner_deprecation_verbosity_default(self):
         args = ['test', '--settings=regressiontests.settings']
         out, err = self.run_django_admin(args)
-        self.assertTrue("DeprecationWarning: warning from test" in err)
+        self.assertIn("DeprecationWarning: warning from test", err)
+        self.assertIn("DeprecationWarning: module-level warning from deprecation_app", err)
 
     @unittest.skipIf(sys.version_info[:2] == (2, 6),
         "On Python 2.6, DeprecationWarnings are visible anyway")
diff --git a/tests/runtests.py b/tests/runtests.py
index 8c56e27..90dc0f5 100755
--- a/tests/runtests.py
+++ b/tests/runtests.py
@@ -1,4 +1,5 @@
 #!/usr/bin/env python
+import logging
 import os
 import shutil
 import subprocess
@@ -106,6 +107,12 @@ def setup(verbosity, test_labels):
     # in our tests.
     settings.MANAGERS = ("admin@djangoproject.com",)
 
+    if verbosity > 0:
+        # Ensure py.warnings are piped through a verbose logging handler
+        logger = logging.getLogger('py.warnings')
+        handler = logging.StreamHandler()
+        logger.addHandler(handler)
+
     # Load all the ALWAYS_INSTALLED_APPS.
     # (This import statement is intentionally delayed until after we
     # access settings because of the USE_I18N dependency.)
