Testing for exceptions
Another requirement is that the price should not be negative. We would want to raise a ValueError
if the price is negative. How would we check for this expectation in a test? Here is one way to do that:
def test_negative_price_should_throw_ValueError(self): goog = Stock("GOOG") try: goog.update(datetime(2014, 2, 13), -1) except ValueError: return self.fail("ValueError was not raised")
In the preceding code, we call the update
method with a negative price. This call is wrapped with a try...except
block to catch ValueError
. If the exception is raised correctly, then control goes into the except
block where we return from the test. Since the test method returned successfully, it is marked as passing. If the exception is not raised, then the fail
method gets called. This is another method provided by unittest.TestCase
and raises a test failure exception when it is called. We can pass in a message...