summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorMorgan Aubert <morgan.aubert@impakfinance.com>2018-04-27 17:18:15 -0400
committerTim Graham <timograham@gmail.com>2018-05-09 11:40:28 -0400
commit704443acacf0dfbcb1c52df4b260585055754ce7 (patch)
tree600147bf6114d7b490fcd253ff9797b7e7531c09 /django
parent7ba040de7703fd06b9b35ddd31da40103d911c30 (diff)
Fixed #29363 -- Added SimpleTestCase.assertWarnsMessage().
Diffstat (limited to 'django')
-rw-r--r--django/test/testcases.py43
1 files changed, 29 insertions, 14 deletions
diff --git a/django/test/testcases.py b/django/test/testcases.py
index 8a85aa2a9f..1fac9ef931 100644
--- a/django/test/testcases.py
+++ b/django/test/testcases.py
@@ -585,10 +585,23 @@ class SimpleTestCase(unittest.TestCase):
)
@contextmanager
- def _assert_raises_message_cm(self, expected_exception, expected_message):
- with self.assertRaises(expected_exception) as cm:
+ def _assert_raises_or_warns_cm(self, func, cm_attr, expected_exception, expected_message):
+ with func(expected_exception) as cm:
yield cm
- self.assertIn(expected_message, str(cm.exception))
+ self.assertIn(expected_message, str(getattr(cm, cm_attr)))
+
+ def _assertFooMessage(self, func, cm_attr, expected_exception, expected_message, *args, **kwargs):
+ callable_obj = None
+ if args:
+ callable_obj = args[0]
+ args = args[1:]
+ cm = self._assert_raises_or_warns_cm(func, cm_attr, expected_exception, expected_message)
+ # Assertion used in context manager fashion.
+ if callable_obj is None:
+ return cm
+ # Assertion was passed a callable.
+ with cm:
+ callable_obj(*args, **kwargs)
def assertRaisesMessage(self, expected_exception, expected_message, *args, **kwargs):
"""
@@ -601,18 +614,20 @@ class SimpleTestCase(unittest.TestCase):
args: Function to be called and extra positional args.
kwargs: Extra kwargs.
"""
- callable_obj = None
- if args:
- callable_obj = args[0]
- args = args[1:]
+ return self._assertFooMessage(
+ self.assertRaises, 'exception', expected_exception, expected_message,
+ *args, **kwargs
+ )
- cm = self._assert_raises_message_cm(expected_exception, expected_message)
- # Assertion used in context manager fashion.
- if callable_obj is None:
- return cm
- # Assertion was passed a callable.
- with cm:
- callable_obj(*args, **kwargs)
+ def assertWarnsMessage(self, expected_warning, expected_message, *args, **kwargs):
+ """
+ Same as assertRaisesMessage but for assertWarns() instead of
+ assertRaises().
+ """
+ return self._assertFooMessage(
+ self.assertWarns, 'warning', expected_warning, expected_message,
+ *args, **kwargs
+ )
def assertFieldOutput(self, fieldclass, valid, invalid, field_args=None,
field_kwargs=None, empty_value=''):