id,summary,reporter,owner,description,type,status,component,version,severity,resolution,keywords,cc,stage,has_patch,needs_docs,needs_tests,needs_better_patch,easy,ui_ux 14503,Unify test for exception+message value assertion method,Ramiro Morales,nobody,"Currently we have a few copies of methods with similar tasks: {{{ $ ack def\ assertRaises --python [...] tests/regressiontests/forms/fields.py 52: def assertRaisesErrorWithMessage(self, error, message, callable, *args, **kwargs): tests/regressiontests/forms/localflavor/be.py 11: def assertRaisesErrorWithMessage(self, error, message, callable, *args, **kwargs): tests/regressiontests/utils/datastructures.py 11: def assertRaisesErrorWithMessage(self, error, message, callable, tests/regressiontests/queries/tests.py 24: def assertRaisesMessage(self, exc, msg, func, *args, **kwargs): tests/regressiontests/fixtures_regress/tests.py 340: def assertRaisesMessage(self, exc, msg, func, *args, **kwargs): tests/regressiontests/urlpatterns_reverse/tests.py 136: def assertRaisesErrorWithMessage(self, error, message, callable, tests/regressiontests/custom_columns_regress/tests.py 12: def assertRaisesMessage(self, exc, msg, func, *args, **kwargs): tests/regressiontests/admin_validation/tests.py 21: def assertRaisesMessage(self, exc, msg, func, *args, **kwargs): tests/regressiontests/file_storage/tests.py 35: def assertRaisesErrorWithMessage(self, error, message, callable, }}} And some of them even run the callable twice: {{{ #!python def assertRaisesErrorWithMessage(self, error, message, callable, *args, **kwargs): self.assertRaises(error, callable, *args, **kwargs) try: callable(*args, **kwargs) except error, e: self.assertEqual(message, str(e)) }}} ",Cleanup/optimization,closed,Testing framework,dev,Normal,fixed,,,Accepted,0,0,0,0,0,0