Een echt project testen · eindproject
Eindproject: Project: toon aan dat de tests werken
Een groene suite bewijst dat de huidige voorbeelden overeenkomen met de huidige productiecode. Ze bewijst nog niet dat die voorbeelden een realistische regressie zouden opmerken. Dit project controleert beide richtingen.
Voer de blijvend opgeslagen suite nog een keer uit:
python -m pytest -q
cat requirements.txt
Het opgeslagen project hoort je programma, de invoer en schemadocumentatie, de ene vastgezette dependency en de tests te bevatten. Het hoort geen selected.json, catalog.json of tijdelijke CSV- of JSON-bestanden te bevatten. Pytest mag uitgesloten hulpprogrammagegevens maken, zoals .pytest_cache; dat is afgeleide toestand, geen geschreven projectbestand.
Maak je eigen programma bewust stuk
Dit is de oefening die bepaalt of je suite het bewaren waard is.
Maak een tijdelijke back-up van catalog.py buiten het project, bijvoorbeeld /tmp/catalog.py.lesson10-backup. Ga dan terug naar het origineel en voeg één defect toe. Een echt defect, zoals een vermoeid mens dat zou schrijven. Voer de suite uit. Wordt er een test rood? Wijst de foutmelding naar wat je hebt stukgemaakt?
Werk deze één voor één af en herstel tussendoor steeds het bestand waarvan je weet dat het goed is. Eindig door de juiste versie terug te zetten en de volledige suite groen te laten draaien:
verander de inclusieve
>=terug in een strikte>;negeer de drempelwaarde helemaal en behoud elk item;
sorteer de geselecteerde items of verwijder duplicaten;
schrijf naar een vaste bestandsnaam in plaats van naar het gevraagde uitvoerpad;
zet
ensure_ascii=Trueopnieuw aan;verwijder het afsluitende regeleinde uit het geschreven bestand;
laat het programma na een leesfout doorgaan en toch uitvoer schrijven.
Zeven defecten. Een suite die bij een van die defecten groen blijft, heeft een gat. Nu weet je precies waar dat zit.
Je kunt jezelf hierbij op twee manieren misleiden. Een suite die altijd rood is, vangt niets op; die is gewoon stuk. En een test die faalt omdat pytest die niet kon verzamelen of je module niet kon importeren, heeft je niets over het defect verteld. Controleer of de uitgangssituatie groen is en het aantal verzamelde tests gelijk blijft voordat je een rood resultaat vertrouwt.
Schrijf de assertie zelf
Nog één regel voor de tests van bestandsgedrag, die belangrijker is dan ze lijkt.
Wanneer je controleert wat de schrijver heeft gemaakt, ontleed je het bestand met json.loads en vergelijk je het met een dictionary die je zelf in de test hebt geschreven. Roep niet je eigen read_catalog_json aan om je eigen write_catalog_json te controleren. Als ze dezelfde fout delen, zullen ze het volledig met elkaar eens zijn en je vertellen dat alles goed is.
Een test hoort een onafhankelijk oordeel te geven, geen tweede stem uit dezelfde bron.
Klik op Check my work wanneer het juiste project groen is en elk bestand dat je tests aanraken onder tmp_path staat.
Opdracht
Maak de blijvend opgeslagen suite in tests/test_catalog.py af: betekenisvolle parametergevallen voor de inclusieve drempel, een aparte controle van volgorde en duplicaten, geïsoleerde controles van Unicode en uitvoeropmaak, en behoud van herkenbare begininhoud bij een leesfout. Houd requirements.txt vastgezet op pytest==9.1.1, de productiecode groen en het project vrij van gegenereerde catalogusbestanden. De beoordelaar toetst de tests met juiste en bewust gewijzigde kopieën buiten je werkruimte.