Tvrdnje (asserts) koriste se kod pisanja testovima i sastavni su deo svih programskih okvira za testiranje.
One testiraju pretpostavke programa. Ako je vrednost ona koju očekujemo, tvrdnja vraća true (tačno) i ništa se ne dešava, program nastavlja normalno da se izvršava. Ali ako je uslov netačan, i tvrdnja vraća netačno (false), tada se javlja greška, i sve se zaustavlja.
Drugim rečima, pomoću tvrdnji proveravamo da ne postoji bag, odnosno da se ne desi nešto što ne bi trebalo. Ako je program bez grešaka, assert nikada neće biti netačan. U suprotnom dobijamo grešku i na vreme primećujemo da nešto ne valja.
Tvrdnje se često stavljaju na početak funkcije za proveru inputa, a na kraju funkcije za verifikaciju izlazne vrednosti.
Evo ga jedan primer.
def izracunaj_cenu_sa_popustom(cena_bez_popusta, popust_u_procentima):
cena_sa_popustom = cena_bez_popusta * (1 - popust_u_procentima/100)
assert 0 <= cena_sa_popustom <= cena_bez_popusta
return cena_sa_popustom
Ovo je funkcija koja računa cenu sa popustom. Napravili smo assert koji osigurava da se uvek javi greška kada je popust veći od 100 posto, jer u tom slučaju bi ispalo da prodavac treba da plati kupcu. Cena ne sme da bude negativna.
Ako pozovete funkciju sa parametrima 100 i 30, izlaz će biti 70 i nikakve greška se neće javiti. Ali ako je pozovete sa parametrima 100 i 150 javiće se AssertionError.
Kada koristite tvrdnje vodite da računa da ne napišete one koji nikada neće prijaviti grešku, ma koje vrednosti da koristite.