2014-12-25 4 views
2

У меня есть некоторые функции:Python nosetest ValueError исключения

def reverse_number(num): 
    try: 
     return int(num) 
    except ValueError: 
     return "Please provide number" 

и тест для этого:

assert_raises(ValueError, reverse.reverse_number, "error") 

Но когда я называю nosetests я получил эту ошибку:

AssertionError: ValueError not raised 

Что я Я делаю неправильно?

ответ

4

Функция reverse_number ловит исключение, превалируя исключение, которое должно быть поднято; вызывают ошибку утверждения, потому что вызов assert_raises ожидает, что вызов функции вызывает исключение ValueError.

Просто не поймать исключение, вы можете получить то, что вы хотите:

def reverse_number(num): 
    return int(num) 

Или, вы можете поймать исключение, сделать что-то, и вновь поднять исключение, используя raise заявление:

def reverse_number(num): 
    try: 
     return int(num) 
    except ValueError: 
     # do something 
     raise # <--- re-raise the exception