Python unittest assertRaises

I copied this transcript from the python.org unittest documentation:

import random import unittest class TestSequenceFunctions(unittest.TestCase): def setUp(self): self.seq = range(10) def test_shuffle(self): # make sure the shuffled sequence does not lose any elements random.shuffle(self.seq) self.seq.sort() self.assertEqual(self.seq, range(10)) # should raise an exception for an immutable sequence self.assertRaises(TypeError, random.shuffle, (1,2,3)) def test_choice(self): element = random.choice(self.seq) self.assertTrue(element in self.seq) def test_sample(self): with self.assertRaises(ValueError): random.sample(self.seq, 20) for element in random.sample(self.seq, 5): self.assertTrue(element in self.seq) if __name__ == '__main__': unittest.main() 

But I get this error message from python 2.7.2 [GCC 4.1.2 20080704 (Red Hat 4.1.2-51)] on linux2:

 .E. ====================================================================== ERROR: test_sample (__main__.TestSequenceFunctions) ---------------------------------------------------------------------- Traceback (most recent call last): File "tmp.py", line 23, in test_sample with self.assertRaises(ValueError): TypeError: failUnlessRaises() takes at least 3 arguments (2 given) ---------------------------------------------------------------------- Ran 3 tests in 0.001s FAILED (errors=1) 

How can I make assertRaises() work correctly?

+7
python unit-testing testing python-unittest
source share
2 answers

Make sure you are really using 2.7 python.

Tested with pythonbrew :

 $ pythonbrew use 2.7.2 $ python test.py ... ---------------------------------------------------------------------- Ran 3 tests in 0.000s OK $ pythonbrew use 2.6.5 $ python test.py .E. ====================================================================== ERROR: test_sample (__main__.TestSequenceFunctions) ---------------------------------------------------------------------- Traceback (most recent call last): File "test.py", line 23, in test_sample with self.assertRaises(ValueError): TypeError: failUnlessRaises() takes at least 3 arguments (2 given) ---------------------------------------------------------------------- Ran 3 tests in 0.000s FAILED (errors=1) 
+6
source share

In python 2.7, the ability to use unittest.TestCase.AssertRaises () as a context manager has been added. http://docs.python.org/2/library/unittest.html#unittest.TestCase.assertRaises

+6
source share

All Articles