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 IsComplementTests(unittest.TestCase): def test_default_case(self): #check docstrings function = main.Oligo.is_complement test = False try: incorrect = "" result = function.__doc__ result = result.strip() test = result != incorrect except: pass message = "No docstring." self.assertTrue(test, message) a = main.Oligo('G') b = main.Oligo('C') 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 complements with a single base each." self.assertTrue(test, message) test = tested_inputs == correct_inputs message = "Modified the inputs." self.assertTrue(test, message) a = main.Oligo('ACGT') b = main.Oligo('ACGT') 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 the subject and argument are both ACGT." self.assertTrue(test, message) test = tested_inputs == correct_inputs message = "Modified the inputs." self.assertTrue(test, message) a = main.Oligo('AACTGCTG') b = main.Oligo('CAGCAGTT') 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 long complements." self.assertTrue(test, message) test = tested_inputs == correct_inputs message = "Modified the inputs." self.assertTrue(test, message) a = main.Oligo('ACT') b = main.Oligo('ACT') 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 subject and parameter are both ACT." self.assertTrue(test, message) test = tested_inputs == correct_inputs message = "Modified the inputs." self.assertTrue(test, message) #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 on single-base non-complements." self.assertTrue(test, message) test = tested_inputs == correct_inputs message = "Modified the inputs." self.assertTrue(test, message) a = main.Oligo('AACTGCTG') b = main.Oligo('CAGCTGTT') 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 on long non-complements." self.assertTrue(test, message) test = tested_inputs == correct_inputs message = "Modified the inputs." self.assertTrue(test, message) if __name__ == "__main__": tests = IsComplementTests() tests.test_default_case()