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: doc = function.__doc__ except: doc = "" correct = doc.strip() != "" message = "docstring is blank." self.assertTrue(correct, message) with mock.patch('sys.stdout', new=io.StringIO()) as fake_stdout: function() output = fake_stdout.getvalue().strip() regex = "[nN]eigh[nN]eigh[nN]eigh[qQmMbB].*" feedback = "Incorrect number of neighs. (Or they're in the wrong place.)" self.assertRegex(output, regex, feedback) regex = ".*h[qQ]uack[qQ]uack[qQ]uack[qQ]uack[mMbB].*" feedback = "Incorrect number of quacks. (Or they're in the wrong place.)" self.assertRegex(output, regex, feedback) regex = ".*k[mM]oo[mM]oo[bB].*" feedback = "Incorrect number of moos. (Or they're in the wrong place.)" self.assertRegex(output, regex, feedback) regex = ".*o[bB]leat" feedback = "Incorrect number of bleats. (Or they're in the wrong place.)" self.assertRegex(output, regex, feedback) regex = "[nN]eigh[nN]eigh[nN]eigh[qQ]uack[qQ]uack[qQ]uack[qQ]uack[mM]oo[mM]oo[bB]leat" feedback = "Doesn't print the correct string." self.assertRegex(output, regex, feedback) if __name__ == "__main__": tests = PrintAnimalSoundsTests() tests.test_default_case()