2013-07-11 18 views
7

skopiowałem to dosłownie z Python.org unittest dokumentacji:Python unittest assertRaises

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() 

Ale ten komunikat o błędzie z Pythona 2.7.2 [GCC 4.1.2 20.080.704 (Red Hat 4.1.2-51) ] na 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) 

Jak mogę uzyskać assertRaises() działał poprawnie?

+0

Powyższy kod działa prawidłowo na Arch - Python 2.7.5. Uaktualnij swój python? – korylprince

+0

Patrz http://stackoverflow.com/help/someone-answers. – alecxe

Odpowiedz

6

Sprawdź, czy naprawdę używasz pytona 2.7.

badano stosując 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) 
+0

"Zmieniono w wersji 2.7: Dodano możliwość użycia assertRaises() jako menedżera kontekstów." Zgodnie z [python manual] (http://docs.python.org/2/library/unittest.html#unittest.TestCase.assertRaises). – charmoniumQ

Powiązane problemy