Chapters
Python114 chapters

Exercises

Testing

3 tasks. Write the code, press Check, and the page runs it against a real Python interpreter.

Exercise 1

TestAdd has no tests yet. Add two that check add(2, 3) is 5 and add(-1, 1) is 0.

Python
import unittest
import io

def add(a, b):
    return a + b

class TestAdd(unittest.TestCase):
    pass

suite = unittest.TestLoader().loadTestsFromTestCase(TestAdd)
result = unittest.TextTestRunner(stream=io.StringIO()).run(suite)
print("ran", result.testsRun, "failures", len(result.failures))
Exercise 2

Add a test that parse_age rejects text, using assertRaises.

Python
import unittest
import io

def parse_age(text):
    return int(text)

class TestParse(unittest.TestCase):
    def test_reads_a_number(self):
        self.assertEqual(parse_age("30"), 30)

suite = unittest.TestLoader().loadTestsFromTestCase(TestParse)
result = unittest.TextTestRunner(stream=io.StringIO()).run(suite)
print("ran", result.testsRun, "failures", len(result.failures))
Exercise 3

This test fails because the implementation is wrong. Fix the code, not the test.

Python
import unittest
import io

def add(a, b):
    return a * b

class TestAdd(unittest.TestCase):
    def test_adds(self):
        self.assertEqual(add(2, 3), 5)

suite = unittest.TestLoader().loadTestsFromTestCase(TestAdd)
result = unittest.TextTestRunner(stream=io.StringIO()).run(suite)
print("failures", len(result.failures))