2013-04-25 15 views
13

Chcę sprawdzić, czy został zgłoszony wyjątek, w jaki sposób mogę to zrobić?Sprawdź, czy poprawiono błąd sprawdzania poprawności

w moim models.py mam tej funkcji, jeden Chcę Test:

def validate_percent(value): 
    if not (value >= 0 and value <= 100): 
     raise ValidationError('error') 

w moim tests.py Próbowałem to:

def test_validate_percent(self): 
    self.assertRaises(ValidationError, validate_percent(1000)) 

wyjście z testu jest :

..E 
====================================================================== 
ERROR: test_validate_percent (tm.tests.models.helpers.HelpersTestCase) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "/...py", line 21, in test_validate_percent 
    self.assertRaises(ValidationError, validate_percent(1000)) 
    File "/....py", line 25, in validate_percent 
    raise ValidationError(u'error' % value) 
ValidationError: ['error'] 
+1

Należy zauważyć, że w Pythonie czek walidacji powinny być napisane 'jeśli nie 0 <= wartość <= 100' . –

Odpowiedz

19

assertRaises służy jako menedżer kontekstowego:

def test_validate_percent(self): 
    with self.assertRaises(ValidationError): 
     validate_percent(1000) 

lub wywoływalnym:

def test_validate_percent(self): 
    self.assertRaises(ValidationError, validate_percent, 1000) 
+1

Korzystanie z assertRaises jako menedżera kontekstu zostało dodane w Pythonie 2.7, więc nie jest dostępne w Pythonie w wersji 2.6 lub starszej - na przykład podczas używania systemu zainstalowanego w Pythonie w CentOS 5.x. To trochę mnie łączyło integracje w procesie budowania RPM w CentOS 5.7. – pcurry

+0

niewiarygodne :) –

2
def test_validate_percent(self): 
    self.assertRaises(ValidationError, validate_percent, 1000) 
Powiązane problemy