9.3 שגיאות וטסטים תרגול
טיפול נכון בשגיאות¶
- הקוד הבא מחזיר קוד סטטוס במקום לזרוק שגיאות, ומערבב פונקציות שזורקות עם פונקציות שמטפלות. תקנו אותו לפי עקרונות הקוד הנקי:
def divide(a, b): if b == 0: return -1 return a / b def read_config(path): try: with open(path) as f: return f.read() except: return None def process(a, b, config_path): result = divide(a, b) if result == -1: print("error: division by zero") return config = read_config(config_path) if config is None: print("error: could not read config") return print(f"result={result}, config={config}")
TDD - כתיבת טסטים לפני הקוד¶
- כתבו טסטים עבור פונקציה בשם
validate_passwordלפני שתממשו אותה. - הדרישות מהפונקציה:
- הסיסמה חייבת להיות לפחות 8 תווים.
- הסיסמה חייבת להכיל לפחות אות גדולה אחת.
- הסיסמה חייבת להכיל לפחות ספרה אחת.
- הפונקציה מחזירה
Trueאם הסיסמה תקינה,Falseאחרת.
- כתבו לפחות 5 טסטים (כולל מקרי קצה).
- לאחר שכתבתם את הטסטים, ממשו את
validate_passwordכך שתעבור את כולם.
תיעוד ו-type hints¶
- קחו פונקציה שכתבתם בפרקים הקודמים (לפחות 5 שורות).
- הוסיפו לה:
- type hinting לכל הפרמטרים ולערך החזרה.
- docstring שמסביר מה הפונקציה עושה, מה היא מקבלת ומה היא מחזירה.
- הריצו
mypyכדי לוודא שה-type hints נכונים.