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 PrintAnimalSoundsTests(unittest.TestCase): def test_default_case(self): function = main.print_animal_sounds 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,2,1) output = fake_stdout.getvalue().strip() correct = "neighneighneighquackquackquackquackmoomoobleat" feedback = "Doesn't print the correct string for parameters 3, 4, 2, and 1" self.assertTrue(output == correct, feedback) with mock.patch('sys.stdout', new=io.StringIO()) as fake_stdout: function() output = fake_stdout.getvalue().strip() correct = "neighneighneighquackquackquackquackmoomoobleat" feedback = "Doesn't print the correct string when I don't include any parameters." self.assertTrue(output == correct, feedback) with mock.patch('sys.stdout', new=io.StringIO()) as fake_stdout: function(2, 0) output = fake_stdout.getvalue().strip() correct = "neighneighmoomoobleat" feedback = "Doesn't print the correct string when I specify only some of the parameters." self.assertTrue(output == correct, feedback) with mock.patch('sys.stdout', new=io.StringIO()) as fake_stdout: function(1, 2, 3) output = fake_stdout.getvalue().strip() correct = "neighquackquackmoomoomoobleat" feedback = "Doesn't print the correct string when I specify only some of the parameters." self.assertTrue(output == correct, feedback) if __name__ == "__main__": tests = PrintAnimalSoundsTests() tests.test_default_case()