קורס Python 3 שיעור בדיקות יחידה


זה נושא דיון מלווה לערך המקורי ב- https://www.tocode.co.il/bundles/python/lessons/27-unit-testing

נכון ל-11/05/2019 נראה שיש בפרק הזה בלבול (כנראה מגרסאות קודמות שלו).

  1. בקובץ car.py מהפרק הקודם (וגם מהפרק הזה ב-GitHub) אין פנקציה בשם is_faster_than אותה אתה בודק לאורך הפרק (החל מסעיף 2).
  2. בסעיף 3 של הפרק אתה מוסיף בדיקה ל-max_speed. גם הוא לא קיים בצורה זו בקוד של car.py, אבל כן מופיע כ-speed.
    [גם הקובץ test_race.py שקיים בדוגמאות הקוד, אבל לא התייחסת אליו בפרק, לא מתאים לקוד המקביל של race.py הנוכחי. כנראה מתייחס לגרסה קודמת שלו בו היה שונה.]

ניתן “לתקן” את הקוד כך ש car.py יהיה:

class Car:
    def __init__(self, color, speed):
        self.color = color
        self.speed = speed

    def show(self):
        print(f"{self.color} car, speed = {self.speed}")

    def is_faster_than(self, other_car):
        return True if self.speed > other_car.speed else False

ו-test_car.py יהיה:

import unittest
from lib.car import Car


class TestCar(unittest.TestCase):
    def setUp(self) -> None:
        self.c1 = Car('blue', 20)
        self.c2 = Car('green', 30)

    def test_faster_then(self):
        self.assertTrue(self.c2.is_faster_than(self.c1))
        self.assertFalse(self.c1.is_faster_than(self.c2))

    def test_colors(self):
        self.assertEqual(self.c1.color, 'blue')

    def test_speed(self):
        self.assertEqual(self.c1.speed, 20)
לייק 1

תודה באמת לא ברור מה קרה לקובץ מהוידאו. אם כבר כתבת תיקון רוצה להפוך את זה ל Pull Request ולשלוח ישר לגיטהאב? (לא חייב רק אם בא לך להתנסות עם הממשק שלהם והגשת Pull Request)

שלחתי PR “נקודתי” עם שני השינויים הנ"ל (וגם שינוי של תקיית האב שלהם, כדי להתאים למספר הפרק המעודכן).
כשאני עברתי על הפרק יצרתי גם סוג-של קובץ main בסגנון של מה שכתבת בפרק, לעומת קובץ demo1.py שקיים במאגר.
אם מעניין אותך, הגרסה שלי כאן:

לייק 1