Skip to content

Instantly share code, notes, and snippets.

@pybites
Created October 21, 2020 16:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pybites/29e6bd91344b4ff747c2f18daf73d00e to your computer and use it in GitHub Desktop.
Save pybites/29e6bd91344b4ff747c2f18daf73d00e to your computer and use it in GitHub Desktop.
# cars.py
from datetime import date
class Car:
def __init__(self, model, year):
self.model = model
self.year = year
self._mileage = []
def __str__(self):
return f"Car: {self.model} ({self.year})"
def drive(self, miles):
self._mileage.append(miles)
@property
def is_flashy(self):
return self.year == date.today().year
@property
def miles_driven(self):
return sum(self._mileage)
if __name__ == "__main__":
car = Car("Sierra", 2020)
car.drive(2)
car.drive(20)
car.drive(33)
print(car.miles_diven)
# test_cars.py
import pytest
from cars import Car
@pytest.fixture
def car():
return Car("Sierra", 2020)
@pytest.fixture
def car2():
return Car("Sierra old", 2018)
@pytest.fixture
def driving(car):
for miles in (2, 3, 44, 66, 2, 1):
car.drive(miles)
def test_init(car, car2):
assert car.miles_driven == 0
assert car2.miles_driven == 0
def test_str(car, car2):
assert str(car) == 'Car: Sierra (2020)'
assert str(car2) == 'Car: Sierra old (2018)'
def test_miles_driven(car, driving):
assert car.miles_driven == 118
def test_flashy(car, car2):
assert car.is_flashy is True
assert car2.is_flashy is False
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment