Zanurkuj w Pythonie/roman.py, etap 3: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Piotr (dyskusja | edycje)
Nie podano opisu zmian
Piotr (dyskusja | edycje)
- {{WEdycji}}, dokończenie tłumaczenia
Linia 1:
{{WEdycji}}
 
{{Podświetl|py}}
== <tt>roman.py</tt>, etap 3 ==
Linia 89 ⟶ 87:
toRoman should fail with 0 input ... ok
# <tt>toRoman</tt> dalej przechodzi testy o znanych wartościach, co jest pocieszające. Ponadto przechodzi wszystkie testy, które przechodził w etapie 2, zatem ostatni kod niczego nie popsuł.
# toRoman still passes the known values test, which is comforting. All the tests that passed in stage 2 still pass, so the latest code hasn't broken anything.
# MoreBardziej excitingekscytujący isjest thefakty, factże thatteraz allnasz ofprogram theprzechodzi badwszystkie inputtesty testsz nowniepoprawnym passwejściem. ThisPrzechodzi ten test, (czyli <tt>testNonInteger</tt>), passesponieważ becausekontrolujemy, of theczy <tt>int(n) <> n check</tt>. WhenKiedy ado non-integerfunkcji is<tt>toRoman</tt> passedzostanie toprzekazana toRomanwartość nie będąca liczbą całkowitą, theporównanie <tt>int(n) <> n</tt> checkwyłapie noticesto iti andwyrzuci raises thewyjątek <tt>NotIntegerError exception</tt>, whicha istego whatoczekuje testNonIntegertest is looking for<tt>testNonInteger</tt>.
# ThisProgram przechodzi ten test, (test <tt>testNegative</tt>), passesponieważ becausew ofprzypadku theprawdziwości wyrażenia <tt>not (0 < n < 4000)</tt> check,zostanie whichwyrzucony raises anwyjątek <tt>OutOfRangeError exception</tt>, whicha isktórego whatoczekuje testNegativetest is looking for<tt>testNegative</tt>.
 
======================================================================
Linia 152 ⟶ 150:
FAILED (failures=6) #(1)
 
# Teraz liczba niezaliczonych testów zmniejszyła się do 6 i wszystkie je powoduje <tt>fromRoman</tt>, czyli: test znanych wartości, trzy testy dotyczące niepoprawnych argumentów, kontrola wielkości znaków i kontrola zdroworozsądkowa (czyli <tt>fromRoman(toRoman(n))==n</tt>). Oznacza to, że <tt>toRoman</tt> przeszedł wszystkie testy, które mógł przejść samemu. (Nawala w teście zdroworozsądkowym, ale test ten wymaga także napisania funkcji <tt>fromRoman</tt>, a to jeszcze nie zostało zrobione.) Oznacza to, że musimy przestać już kodować <tt>toRoman</tt>. Już nie ulepszamy, nie kombinujemy, bez ekstra "a może ten". Stop. Teraz odejdziemy od klawiatury.
# You're down to 6 failures, and all of them involve fromRoman: the known values test, the three separate bad input tests, the case check, and the sanity check. That means that toRoman has passed all the tests it can pass by itself. (It's involved in the sanity check, but that also requires that fromRoman be written, which it isn't yet.) Which means that you must stop coding toRoman now. No tweaking, no twiddling, no extra checks “just in case”. Stop. Now. Back away from the keyboard.
 
{{Infobox|
Jedną z najistotniejszych spraw jest to, że rozumowy unit testing mówi tobie, kiedy przestać kodować. Kiedy funkcja przechodzi wszystkie unit testy przeznaczone dla niej, kończymy kodować tę funkcję. Kiedy wszystkie unit test dla całego modułu zostaną zaliczone, przestajemy kodować moduł.
The most important thing that comprehensive unit testing can tell you is when to stop coding. When all the unit tests for a function pass, stop coding the function. When all the unit tests for an entire module pass, stop coding the module.
}}