Testing

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"), "")

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.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.