diff options
| author | Morgan Aubert <morgan.aubert@impakfinance.com> | 2018-04-27 17:18:15 -0400 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2018-05-09 11:40:28 -0400 |
| commit | 704443acacf0dfbcb1c52df4b260585055754ce7 (patch) | |
| tree | 600147bf6114d7b490fcd253ff9797b7e7531c09 /django | |
| parent | 7ba040de7703fd06b9b35ddd31da40103d911c30 (diff) | |
Fixed #29363 -- Added SimpleTestCase.assertWarnsMessage().
Diffstat (limited to 'django')
| -rw-r--r-- | django/test/testcases.py | 43 |
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=''): |
