For å finne ut om koden man skriver (og endrer på senere) fungerer er det svært vanlig å skrive tester. Heldigvis er det svært enkelt å komme i gang med dette i Python.
Eksempel hvor flere enkle metoder testes:
import unittest from funksjoner import pluss, minus, lagFormattertNavn class FunksjonerTest(unittest.TestCase): def testPluss(self): self.assertEqual(pluss(2,2), 4) def testMinus(self): self.assertEqual(minus(2,2), 0) def testLagFormattertNavn(self): self.assertEqual(lagFormattertNavn("oVe", "baKkeN"), "Ove Bakken") unittest.main() # gir: # ... # ----------------------- # Ran 3 tests in 0.000s # OK
Metodene som testes (fra filen funksjoner.py som importeres over):
def pluss(tall1, tall2): return tall1+tall2 def minus(tall1, tall2): return tall1-tall2 def lagFormattertNavn(fornavn, etternavn): navn = fornavn.strip() + ' ' + etternavn.strip() return navn.title()
Eksempel hvor en klasse testes:
import unittest from handlekurv import Handlekurv class TestHandlekurv(unittest.TestCase): def setUp(selv): selv.handlekurv = Handlekurv() def test(selv): selv.handlekurv.plasser("bananer") selv.handlekurv.plasser("paprika") selv.handlekurv.plasser("smurfedrops") selv.assertIn("bananer", selv.handlekurv.innhold) selv.assertTrue( selv.handlekurv.inneholder("bananer") ) selv.assertEqual( selv.handlekurv.vis(), "bananer paprika smurfedrops ") selv.handlekurv.fjern("bananer") selv.assertNotIn("bananer", selv.handlekurv.innhold) unittest.main() # gir: # . # --------------------------- # Ran 1 test in 0.000s # OK
Først opprettes en tom handlekurv i setUp, så legges det tre stk. varer i denne.
Så tester man direkte på listen i handlekurvobjektet for å se at ene varen faktisk ligger der som den skal. Deretter tester man metoden inneholder i handlekurvklassen for å se at denne gir samme svaret.
Etterpå tester man metoden vis som også er del av handlekurvklassen, hvor man sjekker den tekstlige representasjonen av handlekurvens innhold.
Til slutt fjerner man en vare og tester for å se at denne forsvinner.
Klassen som testes (fra filen handlekurv.py som importeres over):
class Handlekurv(): def __init__(selv): selv.innhold = [] def plasser(selv, vare): selv.innhold.append(vare) def inneholder(selv, vare): return vare in selv.innhold def fjern(selv, vare): selv.innhold.remove(vare) def vis(selv): oversikt = "" for vare in selv.innhold: oversikt += vare + " " return oversikt
For å holde på varene brukes det en liste som oppbevarer tekst.