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 PrintFirstMultiplesTests(unittest.TestCase): def test_default_case(self): function = main.print_first_multiples 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(17, 0) output = fake_stdout.getvalue().strip() correct = "" == output feedback = "Doesn't print out nothing when the second parameter is zero." self.assertTrue(correct, feedback) regex = '' correct = re.match(regex, output) feedback = "Doesn't print out nothing when the second parameter is zero." self.assertTrue(correct, feedback) with mock.patch('sys.stdout', new=io.StringIO()) as fake_stdout: function(17, 1) output = fake_stdout.getvalue().strip() correct = "0" == output feedback = "Doesn't just print out zero when the second parameter is 1." self.assertTrue(correct, feedback) regex = '' correct = re.match(regex, output) feedback = "Doesn't just print out zero when the second parameter is 1." self.assertTrue(correct, feedback) with mock.patch('sys.stdout', new=io.StringIO()) as fake_stdout: function(5, 2) output = fake_stdout.getvalue().strip() correct = output == "0 5" feedback = "Doesn't just print '0 5' when the parameters are (5,2)." self.assertTrue(correct, feedback) regex = '0 5' correct = re.match(regex, output) feedback = "Doesn't just print '0 5' when the parameters are (5,2)." self.assertTrue(correct, feedback) with mock.patch('sys.stdout', new=io.StringIO()) as fake_stdout: function(17, 6) output = fake_stdout.getvalue().strip() numbers = output.split(" ") correct = len(numbers) == 6 feedback = "Doesn't print the correct amount of numbers when the second parameter is bigger than 1." self.assertTrue(correct, feedback) regex = '0 17 34 51 68 85' correct = re.match(regex, output) feedback = "Doesn't print out the correct numbers when the second parameter is bigger than 1." self.assertTrue(correct, feedback) if __name__ == "__main__": tests = PrintFirstMultiplesTests() tests.test_default_case()