import unittest import io import re from unittest import mock import math import student_X as main #Replace student_X with your filename import sys import io from io import StringIO class PrintAboutRectangleTests(unittest.TestCase): def test_default_case(self): function = main.print_about_rectangle try: docstring = function.__doc__ docstring = docstring.strip() except: docstring = "" correct = docstring != "" message = "docstring is blank." self.assertTrue(correct, message) with mock.patch('sys.stdout', new=io.StringIO()) as fake_stdout: function(3, 4, 3, 5) output = fake_stdout.getvalue().strip() correct = "isn't" in output or "is not" in output feedback = "Doesn't include \"isn't\" when the lengths aren't a rectangle." self.assertTrue(correct, feedback) correct = output.endswith("!") feedback = "The output doesn't end with an exclamation point." self.assertTrue(correct, feedback) regex = "This isn't a rectangle!" correct = re.match(regex, output) feedback = "Doesn't work when the parameters don't form a rectangle." self.assertTrue(correct, feedback) with mock.patch('sys.stdout', new=io.StringIO()) as fake_stdout: function(3, 4, 1, 4) output = fake_stdout.getvalue().strip() correct = "isn't" in output or "is not" in output feedback = "Doesn't include \"isn't\" when the lengths aren't a rectangle." self.assertTrue(correct, feedback) correct = output.endswith("!") feedback = "The output doesn't end with an exclamation point." self.assertTrue(correct, feedback) regex = "This isn't a rectangle!" correct = re.match(regex, output) feedback = "Doesn't work when the parameters don't form a rectangle." self.assertTrue(correct, feedback) with mock.patch('sys.stdout', new=io.StringIO()) as fake_stdout: function(5, 40, 5, 40) output = fake_stdout.getvalue().strip() correct = output.endswith(".") feedback = "The output doesn't end with a period." self.assertTrue(correct, feedback) regex = "Nice rectangle\." correct = re.match(regex, output) feedback = "Doesn't work when the parameters form a (non-square) rectangle." self.assertTrue(correct, feedback) with mock.patch('sys.stdout', new=io.StringIO()) as fake_stdout: function(12, 12, 12, 12) output = fake_stdout.getvalue().strip() correct = output.endswith("!") feedback = "The output doesn't end with an exclamation point." self.assertTrue(correct, feedback) regex = "This is a square!" correct = re.match(regex, output) feedback = "Doesn't work when the parameters form a square." self.assertTrue(correct, feedback) if __name__ == "__main__": tests = PrintAboutRectangleTests() tests.test_default_case()