1
我寫我的第一個Python包測試裝飾和我想寫以下裝飾單元測試:如何在Python包
class MaxTriesExceededError(Exception):
pass
def tries(max_tries=3, error_message=os.strerror(errno.ETIME)):
def decorator(func):
try_count = 0
def wrapper(*args, **kwargs):
try_count+=1
try:
if try_count <= max_tries:
result = func(*args,**kwargs)
return result
else:
raise MaxTriesExceededError(error_message)
except:
if try_count <= max_tries:
wrapper(*args,**kwargs)
else:
raise Exception
return wraps(func)(wrapper)
return decorator
裝飾的目的是拋出,如果出現錯誤函數的失敗次數超過max_tries,但是如果沒有超過最大嘗試次數,請嘗試重試並重試。說實話,我不確定代碼沒有錯誤。因此我的問題是雙重的,代碼是否正確,以及如何使用unittest爲它編寫單元測試?
你應該確切指定*要在功能測試什麼:它究竟重試N次?只有在發生特定故障時才重試?如果失敗,它會引發特定的異常?你應該爲每個測試編寫一個單元測試,因此,你需要決定你想要的所有測試。 – shx2