Ohjelmoinnin peruskurssi Y2, kurssimateriaali

3.3. Tehtävä: Funktion weekdays testaaminen (130 p)

«  3.2. Pythonin testausvälineet   ::   Etusivulle   ::   3.4. Tehtävä: Linkitetty lista (170 p)  »

3.3. Tehtävä: Funktion weekdays testaaminen (130 p)

Tästä sivusta:

Mitä käsitellään? Testausta

Mitä tehdään? Kirjoitetaan testejä valmiina annetulle osittain virheelliselle koodille

Suuntaa antava vaativuusarvio: Keskivaikea.

Suuntaa antava työläysarvio: 1-2 tuntia

Pistearvo: 130 pistettä

Intro

Tässä tehtävässä perehdytään yksikkötestaukseen. Kannattaa perehtyä ensin lukuun Pythonin testausvälineet, jossa kerrotaan Pythonin unittest-luokasta. Saat pienen pätkän valmista virheellistä koodia ja laadit yksikkötestit, jotka paljastavat koodissa olevat viat. Tehtävässä käytetään Pythonin kirjaston modulin datetime luokkia date ja timedelta. Erityisesti kannattaa perehtyä Date -luokan weekday-metodiin.

Osatehtävä 1 (100p)

Tarkastellaan oheista funktiota, jonka on tarkoitus palauttaa listassa annettujen päivämäärien start ja end väliin osuvat arkipäivät. Myös start ja end kuuluvat tulokseen, mikäli ne sattuvat olemaan arkipäiviä.

from datetime import timedelta

def weekdays(start, end):
    '''
    Parameters start and end are date objects.
    Returns a sequence of all dates between
    start and end inclusively that are
    weekdays (Mon, Tue, Wed, Thu, Fri).
    '''
    result = []
    current = start
    oneday = timedelta(days=1)
    while True:
        if current.weekday() <= 5:
            result.append(current)
        current = current + oneday
        if current >= end:
            return result

Koodissa on kuitenkin kaksi virhettä. Tee kaksi testimetodia, jotka paljastavat nämä virheet. Pidä huolta, että kumpikin metodi yksinään paljastaa virheistä vain toisen.

Miten pääset alkuun testien laatimisessa?

Kokeile vaikka ensin ajaa funktiota Pythonissa. Katso kalenterista joku aikaväli ja siinä esiintyvät arkipäivät sekä ei-arkipäivät. Kun sinulla on käsitys, mitä funktion pitäisi tuottaa ja mitä se tuottaa, voit kirjoittaa testit.

Annetut tiedostot

Saat valmiina koodina tiedoston weekdays.py, jossa on yllä oleva virheellinen koodi sekä tiedoston test_weekdays.py, joka sisältää tyhjän luokan TestWeekdays, jonka sisään kirjoitat koodisi.

Palautettava tiedosto

Osatehtävä 2 (30p)

Korjaa funktion weekdays virheet ja palauta se.

Palaute

«  3.2. Pythonin testausvälineet   ::   Etusivulle   ::   3.4. Tehtävä: Linkitetty lista (170 p)  »