import unittest import io import re from unittest import mock import math import copy import inspect import student_X as main #Replace student_X with your filename class PointEqTests(unittest.TestCase): def test_default_case(self): function = main.Point.__eq__ test = False try: incorrect = "" result = function.__doc__ result = result.strip() test = result != incorrect except: pass message = "No docstring." self.assertTrue(test, message) a = main.Point(0, 0) b = main.Point(0,0) inputs = (a, b) tested_inputs = inputs #change this if you need to test specific inputs #expected answers correct_inputs = inputs correct_result = True correct_printed = "" #run the test 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 = correct_printed == printed_output message = "Shouldn't print anything out." self.assertTrue(test, message) test = result == correct_result message = "Doesn't work when both points are at the origin (0,0)." self.assertTrue(test, message) test = tested_inputs == correct_inputs message = "Modifies the inputs." self.assertTrue(test, message) a = main.Point(5, 2) b = main.Point(5,2) inputs = (a, b) tested_inputs = inputs #change this if you need to test specific inputs #expected answers correct_inputs = inputs correct_result = True correct_printed = "" #run the test 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 = correct_printed == printed_output message = "Shouldn't print anything out." self.assertTrue(test, message) test = result == correct_result message = "Doesn't work on equal points." self.assertTrue(test, message) test = tested_inputs == correct_inputs message = "Modifies the inputs." self.assertTrue(test, message) a = main.Point(5, 16) b = main.Point(-34,2) inputs = (a, b) tested_inputs = inputs #change this if you need to test specific inputs #expected answers correct_inputs = inputs correct_result = False correct_printed = "" #run the test 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 = correct_printed == printed_output message = "Shouldn't print anything out." self.assertTrue(test, message) test = result == correct_result message = "Doesn't work when the points have different x and y fields." self.assertTrue(test, message) test = tested_inputs == correct_inputs message = "Modifies the inputs." self.assertTrue(test, message) a = main.Point(10, 171) b = main.Point(-34,171) inputs = (a, b) tested_inputs = inputs #change this if you need to test specific inputs #expected answers correct_inputs = inputs correct_result = False correct_printed = "" #run the test 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 = correct_printed == printed_output message = "Shouldn't print anything out." self.assertTrue(test, message) test = result == correct_result message = "Doesn't work when the points have different x values." self.assertTrue(test, message) test = tested_inputs == correct_inputs message = "Modifies the inputs." self.assertTrue(test, message) a = main.Point(100, 99) b = main.Point(100,101) inputs = (a, b) tested_inputs = inputs #change this if you need to test specific inputs #expected answers correct_inputs = inputs correct_result = False correct_printed = "" #run the test 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 = correct_printed == printed_output message = "Shouldn't print anything out." self.assertTrue(test, message) test = result == correct_result message = "Doesn't work when the points have different values of the y fields." self.assertTrue(test, message) test = tested_inputs == correct_inputs message = "Modifies the inputs." self.assertTrue(test, message) if __name__ == "__main__": tests = PointEqTests() tests.test_default_case()