Implement checks for raising messages with exceptions (#1113)

* Implement checks for messages being raised with exceptions
(Fixes #1080)

* Add self.assertRaisesWithMessage method to relevant exercise tests
    - Uses self.assertRaisesRegex
    - Checks only for the presence of a message, not content
* Add meaningful messages to failing examples
* octal: Switch to using a context manager for exception tests

* Add note regarding error messages to the insert

* simple-linked-list: Move hints.md to correct location

* simple-cipher: Remove extra whitespace from lines

* collatz-conjecture: Update hints.md

* Regenerate README to include exceptions section
This commit is contained in:
Nathan Parsons
2017-12-12 18:11:43 +00:00
committed by Corey McCandless
parent 2f93a626f1
commit f53e2ef08b
152 changed files with 2252 additions and 230 deletions

View File

@@ -34,25 +34,35 @@ class TriangleTests(unittest.TestCase):
self.assertEqual(Triangle(0.4, 0.6, 0.3).kind(), "scalene")
def test_triangles_with_no_size_are_illegal(self):
with self.assertRaises(TriangleError):
with self.assertRaisesWithMessage(TriangleError):
Triangle(0, 0, 0)
def test_triangles_with_negative_sides_are_illegal(self):
with self.assertRaises(TriangleError):
with self.assertRaisesWithMessage(TriangleError):
Triangle(3, 4, -5)
def test_triangles_violating_triangle_inequality_are_illegal(self):
with self.assertRaises(TriangleError):
with self.assertRaisesWithMessage(TriangleError):
Triangle(1, 1, 3)
def test_triangles_violating_triangle_inequality_are_illegal_2(self):
with self.assertRaises(TriangleError):
with self.assertRaisesWithMessage(TriangleError):
Triangle(2, 4, 2)
def test_triangles_violating_triangle_inequality_are_illegal_3(self):
with self.assertRaises(TriangleError):
with self.assertRaisesWithMessage(TriangleError):
Triangle(7, 3, 2)
# Utility functions
def setUp(self):
try:
self.assertRaisesRegex = self.assertRaisesRegexp
except AttributeError:
pass
def assertRaisesWithMessage(self, exception):
return self.assertRaisesRegex(exception, r".+")
if __name__ == '__main__':
unittest.main()