2012-05-23 12 views
5

Używam nose 1.1.2 do pisania testów dla projektu Python. Istnieje funkcja assert_raises, o której jest mowa w dokumentacji, ale nie mogę jej nigdzie znaleźć.Gdzie jest funkcja assert_raises nosa?

To powinno być skrótem coś takiego:

value_error_raised = False 
try: 
    do_something_that_should_raise_value_error() 
except ValueError: 
    value_error_raised = True 
assert value_error_raised 

type_error_raised = False 
try: 
    do_something_else_that_should_raise_type_error() 
except TypeError: 
    type_error_raised = True 
assert type_error_raised 

że staną:

assert_raises(ValueError, 
       do_something_that_should_raise_value_error) 

assert_raises(TypeError, 
       do_something_else_that_should_raise_type_error) 

już szukał kodu źródłowego, a jedynie wzmianka znalazłem w tools.py moduł wewnątrz dokumentacji raises:

Jeśli chcesz przetestować wiele twierdzeń dotyczących wyjątków w jednym teście możesz zamiast tego użyć assert_raises.

Czy ta funkcja została usunięta z nosa? Jeśli tak, czy ktoś mógłby mi pomóc zrozumieć dlaczego?

Odpowiedz

7
>>> from nose.tools import assert_raises 
>>> assert_raises 
<bound method Dummy.assertRaises of <nose.tools.Dummy testMethod=nop>> 
>>> import nose 
>>> nose.__version__ 
'1.1.2' 

Osobiście używam klas unittest2.TestCase z próbami odręcznymi i używam self.assertRaises.

+0

OK, to działa! Dzięki! Właśnie zdałem sobie sprawę, że powodem nie jest wyraźnie zdefiniowane na nose.tools jest to, że jest to obejście poprzez unittest.TestCase assertRaise realizacji. W związku z tym zaćmienie nadal zgłasza błąd importu z 'from nose.tools import assert_raises'. – tbellardi

+0

to nie tylko sytuacja, w której PyDev jest źle, w większym projekcie używającym Jython pamiętam, że muszę dodawać wyjątki dla ponad stu identyfikatorów ... –

5

Użyj dekoratora @raises(*exceptions) w swojej funkcji testowej.

+4

Sprawdza, czy jeden z wyjątków został podniesiony, więc potrzebowałbym funkcji testowej dla każdego podniesionego błędu. Jeśli chcę, aby jedna funkcja testowa sprawdzała wiele wyjątków, to mi nie pomoże. – tbellardi