sample.py
import types import unittest class SampleTest(unittest.TestCase): def test_example(self): """ An example of how to do the tests """ # Variables # # Create a variable ``name`` that is assigned to the string # "Matt". # ================================ name = "Matt" self.assert_(isinstance(name, types.StringType)) self.assertEquals(name, 'Matt') if __name__ == '__main__': unittest.main()
variables.py
import unittest class TestVariables(unittest.TestCase): def test_variables(self): """ This is a test method you will need to fill in the content where it says and then run it (ie ``python variables.py``). If it doesn't complain, then you pass! """ # create a the variable ``a`` and assign it to a float (5.0) # ************************************************** a=5.0 self.assert_(isinstance(a, float)) # re-assign ``a`` to 6 # ************************************************** a = 6 self.assertEqual(a, 6) self.assert_(isinstance(a, int)) # create a variable ``b`` assigned to "hello" # ************************************************** b = "hello" self.assertEqual(b, "hello") self.assertTrue(isinstance(b, str)) if __name__ == '__main__': unittest.main()
strings.py
import unittest class TestStrings(unittest.TestCase): def test_strings(self): """ A basic introduction to strings """ # Create the variable ``a`` and assign 'hello world' #************************************************** a='hello world' self.assertEqual(a, """hello world""") self.assert_(isinstance(a, str)) # Create a string, ``b`` that equals ``a`` multiplied by 2 #************************************************** b = a * 2 self.assertEqual(b, 'hello worldhello world') # Triple quoted strings (with ''' or """) allow embedded of # both single and double quotes. # Create a triple quoted string # ``c`` that has the following content: # Frank said, "That's not a way to talk to an economist!" #************************************************** c = '''Frank said, "That's not a way to talk to an economist!"''' self.assertEqual(c, 'Frank said, "That\'s not a way to talk to an economist!"') # Assign the method names of a string to a variable ``d`` # use ``dir()`` to list them #************************************************** d = dir(a) self.assertEqual(d, ['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_formatter_field_name_split', '_formatter_parser', 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']) # Create a variable e that has holds the index of the # substring "o w" in the string a. (Use a string method to # figure it out) #************************************************** e=a.index("o w") self.assertEqual(e, 4) if __name__ == '__main__': unittest.main()
lists.py
import unittest class TestLists(unittest.TestCase): def test_lists(self): """ A basic introduction to lists """ # Create the variable ``a`` and assign to an empty list # ************************************************** a= [] self.assertEquals(a, []) # Append 'fred' and 'arnold' to ``a`` # ************************************************** a.append('fred') a.append('arnold') self.assertEquals(a, ['fred', 'arnold']) # Sort ``a`` # ************************************************** a.sort() self.assertEquals(a, ['arnold', 'fred']) # ``extend`` the list ``a`` with ['barney', 'george'] # ************************************************** a.extend(['barney', 'george']) self.assertEquals(a, ['arnold', 'fred', 'barney', 'george']) # create a variable ``idx`` with the index of 'barney' in ``a`` using list methods. # ************************************************** idx=a.index('barney') self.assertEquals(idx, 2) if __name__ == '__main__': unittest.main()
dictionaries.py
import unittest class TestDicts(unittest.TestCase): def test_dicts(self): """ A basic introduction to dictionaries """ # Create the variable ``room2names`` and assign to an empty dict #************************************************** room2names={} self.assertEquals(room2names, {}) # map the string 'room1' to an empty list #************************************************** room2names["room1"] = [] self.assertEquals(room2names['room1'], []) self.assert_('room1' in room2names) # map the string 'room2' to ['fred', 'hermione'] #************************************************** room2names["room2"]= ['fred', 'hermione'] self.assertEquals(room2names['room2'], ['fred', 'hermione']) # add 'harry' to the list in 'room1' room2names["room1"].append('harry') self.assertEquals(room2names['room1'], ['harry']) # use ``setdefault`` to assign the contents of 'room3' # to an empty list and store the result in variable ``empty`` empty=room2names.setdefault('room3',[]) self.assertEquals(room2names['room3'], []) self.assertEquals(empty, []) # use ``in`` to see if 'room4' is there. # assign the results to variable ``d`` d = "room4" in room2names self.assertEquals(d, False) # use ``del`` to remove 'room1' del room2names['room1'] self.assert_('room1' not in room2names) if __name__ == '__main__': unittest.main()
functions.py
import types import unittest class TestFunctions(unittest.TestCase): def test_functions(self): """ A basic introduction to functions """ # Define a function called ``add_2`` that returns 2 more than # what is passed into it. Normally function are global to a # module, but they can also be defined in the scope of another # function. You can either put it below, or outside of the # TestFunctions class. # ================================ def add_2(num): return num+2 self.assert_(isinstance(add_2, types.FunctionType)) self.assertEquals(add_2(4), 6) # Write a function ``add_3`` that has the following docstring: # "Adds 3 to the input" # ================================ def add_3(): "Adds 3 to the input" self.assertEquals(add_3.__doc__, 'Adds 3 to the input') # Default Parameters. # Write a function ``mul_n`` that takes one or two parameters (the second parameter named ``x``). # If it has 2 parameters it multiplies them. If it takes one # parameter, it multiplies it by 5 # ================================ def mul_n(y,x=5): return y*x self.assertEquals(mul_n(5,1), 5) self.assertEquals(mul_n(5), 25) self.assertEquals(mul_n.func_defaults, (5,)) if __name__ == '__main__': unittest.main()
loops.py
import unittest class TestLoops(unittest.TestCase): def test_loops(self): # Using ``range`` # Write variable ``a`` that holds 0 to 5 (use the ``range`` function) # ================================ a=range(0,6) self.assertEquals(a, [0,1,2,3,4,5]) # ``range`` 2 # Create variable ``b`` that holds from 3 to 11 # ================================ b=range(3,12) self.assertEquals(b, [3,4,5,6,7,8,9,10,11]) # Write a function ``even`` that takes a list of # number and returns a list of even numbers # ================================ def even(num): evenlist=[] for k in num: if k%2==0: evenlist.append(k) return evenlist self.assertEquals(even(a), [0, 2, 4]) self.assertEquals(even(b), [4, 6, 8, 10]) # Write a function ``even_index`` that takes a list # of numbers and returns those that are in an even # index position # ================================ def even_index(num): newlist=[] for index, value in enumerate(num): if index%2==0: newlist.append(value) return newlist self.assertEquals(even_index(a), [0, 2, 4]) self.assertEquals(even_index(b), [3, 5, 7, 9, 11]) if __name__ == '__main__': unittest.main()
Classes.py
import unittest class TestClass(unittest.TestCase): def test_classes(self): # Create a class called ``Echoer`` # Accept a name in the constructor # ================================ class Echoer(object): def __init__(self,name): self.name = name def say(self, strval): return '''%s said, "%s\"''' % (self.name,strval) e = Echoer('matt') self.assert_(isinstance(e, Echoer)) # Add a method ``say`` to Echoer that # accepts a string and returns: # ${name} said, "${string}" # ================================ self.assertEquals(e.say('hi'), 'matt said, "hi"') # Subclass - create a subclass ``Screamer`` # of ``Echoer`` that has the same constructor # but ``say`` returns: # ${name} screamed, "${string.upper()}" # ================================ class Screamer(Echoer): def say(self, strval): return '''%s screamed, "%s\"''' % (self.name,strval.upper()) s = Screamer("Frank") self.assertEquals(s.say('later'), 'Frank screamed, "LATER"') if __name__ == '__main__': unittest.main()