לדלג לתוכן

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 שורות).
  • הוסיפו לה:
    1. type hinting לכל הפרמטרים ולערך החזרה.
    2. docstring שמסביר מה הפונקציה עושה, מה היא מקבלת ומה היא מחזירה.
    3. הריצו mypy כדי לוודא שה-type hints נכונים.