2014-12-25 166 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