Testing in Python - how to use assertRaises in testing using unittest?

Viewed 34440

I am trying to do a simple test in Python using unittest, to see if a class throws an exception if it gets an unsuitable input for the constructor. The class looks like this:

class SummaryFormula:
    def __init__( self, summaryFormula):
        self.atoms = {}
        for atom in re.finditer( "([A-Z][a-z]{0,2})(\d*)", summaryFormula):
            symbol = atom.group(1)
            count = atom.group(2)

            if pocet != "":
                self.atoms[ symbol] = int(count)
            else:
                self.atoms[ symbol] = 1

My test is following:

    class ConstructorTestCase(unittest.TestCase):
      def testEmptyString(self):
        self.assertRaises(TypeError, ukol1.SummaryFormula(), "testtest")

    if __name__ == '__main__':
      unittest.main()

All I want is the test to fail, meaning that the exception of unsuitable input for constructor is not handled.

Instead, I get an error: __init__() takes exactly 2 arguments (1 given).

What am I missing? What is the second argument I should specify?

Also, what type of Error should I use to handle exception that an input not matchable by my regexp was passed to the constructor?

Thank you, Tomas

5 Answers
Related