Udowodnij poprawkę
Błąd wspólnej listy w add_sample() jest naprawiony. Skąd wiesz, że taki zostanie? Za pół roku ktoś uporządkuje funkcję, a log=[] wygląda o wiele prościej niż sprawdzenie None.
Napisz test, który udowodni poprawkę: ma przechodzić teraz i nie przechodzić dla starego kodu. Ukryte testy przywracają stary kod, żeby to sprawdzić.
Ukończ etap 1, aby odblokować ten etap.
Napisz sprawdzenia assert, które przechodzą dla tej funkcji, ale nie przeszłyby dla starej: wywołaj ją dwa razy bez dziennika i sprawdź, że każde wywołanie dostało listę tylko ze swoim pomiarem. Potem wypisz:
Wszystkie sprawdzenia przeszły
Zostaw funkcję bez zmian. Ukryte testy zamieniają ją na starą wersję z log=[], a twoje sprawdzenia muszą ją zatrzymać.
Ukończ etap 1, aby odblokować ten etap.
Poprawka może pójść za daleko. Dodaj sprawdzenia, że przekazany dziennik nadal dostaje pomiar: wynik zawiera stare pomiary i nowy, i jest dokładnie tą listą, którą przekazano. Zostaw linię o powodzeniu na końcu.
Ukryte testy próbują teraz także dwóch „poprawek”, które to psują: jednej, która ignoruje przekazany dziennik, i drugiej, która zwraca kopię zamiast do niego dopisywać.
Podpowiedzi
Wartości domyślne parametrów
# Parametry z wartościami domyślnymi
def ship_status(name, fuel=100, crew=True):
print(f"Statek: {name}")
print(f"Paliwo: {fuel}%")
print(f"Załoga na pokładzie: {crew}")
print()
# Wszystkie argumenty
ship_status("Explorer", 75, True)
# Tylko wymagane
ship_status("Voyager")
# Mieszane - argumenty nazwane
ship_status("Pioneer", crew=False)
Oddziel argumenty przecinkami. Każde uruchomienie przekazuje je jako sys.argv[1:].