how to make a calculator: tests and solutions¶
tests¶
Here is the code in tests/test_calculator.py
import random
import src.calculator
import unittest
def a_random_number():
return random.randint(-10, 10)
class TestCalculator(unittest.TestCase):
x = a_random_number()
y = a_random_number()
def test_addition(self):
self.assertEqual(
src.calculator.add(self.x, self.y),
self.x+self.y
)
def test_subtraction(self):
self.assertEqual(
src.calculator.subtract(self.x, self.y),
self.x-self.y
)
def test_multiplication(self):
self.assertEqual(
src.calculator.multiply(self.x, self.y),
self.x*self.y
)
def test_division(self):
while self.y == 0:
with self.assertRaises(ZeroDivisionError):
src.calculator.divide(self.x, self.y)
self.y = a_random_number()
else:
self.assertEqual(
src.calculator.divide(self.x, self.y),
self.x/self.y
)
# Exceptions Encountered
# AssertionError
# NameError
# AttributeError
# TypeError
# ZeroDivisionError
solutions¶
Here are the solutions in calculator.py
def add(x, y):
return x + y
def subtract(x, y):
return x - y
def multiply(x, y):
return x * y
def divide(x, y):
return x / y