import unittest import io import re from unittest import mock import math import student_X as main #Replace student_X with your filename import inspect class MySquareRootTests(unittest.TestCase): def test_default_case(self): function = main.my_square_root test = False try: incorrect = "" result = function.__doc__.strip() test = incorrect != result except: pass self.assertTrue(test, "No docstring.") inputs = (4, ) correct = 2 test = False with mock.patch('sys.stdout', new=io.StringIO()) as fake_stdout: if isinstance(inputs, tuple): result = function(*inputs) else: result = function(inputs) printed_output = fake_stdout.getvalue().strip() test = abs(correct - result) < .0001 self.assertTrue(test, "Doesn't work on 4 and the default delta.") inputs = (16, .1) delta = inputs[1] correct = 4 test = False with mock.patch('sys.stdout', new=io.StringIO()) as fake_stdout: if isinstance(inputs, tuple): result = function(*inputs) else: result = function(inputs) printed_output = fake_stdout.getvalue().strip() test = abs(correct - result) < delta self.assertTrue(test, "Doesn't work when I specify the delta.") inputs = (121, .01) delta = inputs[1] correct = 11 test = False with mock.patch('sys.stdout', new=io.StringIO()) as fake_stdout: if isinstance(inputs, tuple): result = function(*inputs) else: result = function(inputs) printed_output = fake_stdout.getvalue().strip() test = abs(correct - result) < delta self.assertTrue(test, "Doesn't work when I specify a small delta.") inputs = (25, 2) delta = inputs[1] correct = 5 test = False with mock.patch('sys.stdout', new=io.StringIO()) as fake_stdout: if isinstance(inputs, tuple): result = function(*inputs) else: result = function(inputs) printed_output = fake_stdout.getvalue().strip() test = abs(correct - result) < delta self.assertTrue(test, "Doesn't work when I specify a large delta.") if __name__ == "__main__": tests = MySquareRootTests() tests.test_default_case()