Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Johdanto Python-Testaukseen | Pytest-Kehyksen Hallinta
Pythonin Rakenteellinen Ohjelmointi

bookJohdanto Python-Testaukseen

Osiossa Virheenkäsittely tarkastelimme, kuinka hallita sekä syntaksivirheitä että ajoaikaisia virheitä, mutta emme käsitelleet loogisten virheiden hallintaa. Tässä osiossa perehdymme kahteen testauksen tyyppiin, jotka ovat olennaisia sovellustemme logiikan varmentamisessa: manuaalinen ja automaattinen testaus.

Testaus jaetaan yleisesti näihin kahteen kategoriaan. Manuaalinen testaus tarkoittaa, että testaajat suorittavat testejä itse vuorovaikuttamalla sovelluksen kanssa ja tarkistavat ominaisuuksien oikeellisuuden vaatimusten mukaisesti. Tämä testausmuoto on hyödyllinen, mutta voi olla aikaa vievää ja altista inhimillisille virheille.

Automaattinen testaus puolestaan hyödyntää skriptejä ja työkaluja testien suorittamiseen automaattisesti ilman suoraa ihmisen osallistumista, varmistaen että sovellus toimii odotetusti. Tämä paitsi nopeuttaa testausta, myös lisää sen tarkkuutta ja johdonmukaisuutta.

Johdanto testivetoiseen kehitykseen (TDD)

Keskeinen menetelmä automaattisessa testauksessa on testivetoinen kehitys (TDD). TDD on innovatiivinen kehitysprosessi, jossa testit kirjoitetaan ennen varsinaista koodia. Prosessi etenee yksinkertaisessa syklissä: kirjoita testi, suorita testi (jonka tulisi aluksi epäonnistua), kirjoita vähimmäismäärä koodia testin läpäisemiseksi ja refaktoroi sitten koodi siisteyden ja tehokkuuden saavuttamiseksi.

Unittest- ja Pytest-kehysten yleiskatsaus

Python tarjoaa useita kehyksiä testien kirjoittamiseen ja suorittamiseen, joista Unittest ja Pytest ovat kaksi suosituimmista.

Unittest

Unittest on Pythonin sisäänrakennettu testauskehys. Unittest on luokkapohjainen ja edellyttää, että testit järjestetään luokkiin, jotka periytyvät unittest.TestCase -luokasta.

Pytest

Pytest on tehokas kolmannen osapuolen testauskehys, joka tukee yksinkertaisia testitapauksia sekä yksinkertaisiin että monimutkaisiin testiskenaarioihin. Toisin kuin Unittest, Pytest mahdollistaa testifunktioiden kirjoittamisen ilman, että niitä tarvitsee sijoittaa luokkiin.

Keskiarvon laskentafunktion testaaminen

Tarkastellaan yksinkertaista funktiota, joka laskee kahden luvun keskiarvon, ja miten sitä voidaan testata sekä Unittestillä että Pytestillä.

Testattava funktio:

1234
def calculate_average(num1, num2): return (num1 + num2) / 2 print(calculate_average(3, 5))
copy

Testaus Unittest-kirjastolla

import unittest

class TestAverageCalculation(unittest.TestCase):
    def test_average(self):
        result = calculate_average(10, 20)
        self.assertEqual(result, 15)

Testaus pytest-kirjastolla

import pytest

def test_average():
    assert calculate_average(10, 20) == 15

Vaikka Unittest on erinomainen kehittäjille, jotka tuntevat xUnit-muodon ja suosivat jäsenneltyä, olio-ohjelmointipohjaista testaustapaa, Pytest sopii niille, jotka hakevat enemmän joustavuutta ja yksinkertaisuutta sekä tehokkaita ominaisuuksia monimutkaisiin testeihin, joita Unittest ei käsittele yhtä helposti.

Nähdään seuraavassa luvussa!

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 1

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

bookJohdanto Python-Testaukseen

Pyyhkäise näyttääksesi valikon

Osiossa Virheenkäsittely tarkastelimme, kuinka hallita sekä syntaksivirheitä että ajoaikaisia virheitä, mutta emme käsitelleet loogisten virheiden hallintaa. Tässä osiossa perehdymme kahteen testauksen tyyppiin, jotka ovat olennaisia sovellustemme logiikan varmentamisessa: manuaalinen ja automaattinen testaus.

Testaus jaetaan yleisesti näihin kahteen kategoriaan. Manuaalinen testaus tarkoittaa, että testaajat suorittavat testejä itse vuorovaikuttamalla sovelluksen kanssa ja tarkistavat ominaisuuksien oikeellisuuden vaatimusten mukaisesti. Tämä testausmuoto on hyödyllinen, mutta voi olla aikaa vievää ja altista inhimillisille virheille.

Automaattinen testaus puolestaan hyödyntää skriptejä ja työkaluja testien suorittamiseen automaattisesti ilman suoraa ihmisen osallistumista, varmistaen että sovellus toimii odotetusti. Tämä paitsi nopeuttaa testausta, myös lisää sen tarkkuutta ja johdonmukaisuutta.

Johdanto testivetoiseen kehitykseen (TDD)

Keskeinen menetelmä automaattisessa testauksessa on testivetoinen kehitys (TDD). TDD on innovatiivinen kehitysprosessi, jossa testit kirjoitetaan ennen varsinaista koodia. Prosessi etenee yksinkertaisessa syklissä: kirjoita testi, suorita testi (jonka tulisi aluksi epäonnistua), kirjoita vähimmäismäärä koodia testin läpäisemiseksi ja refaktoroi sitten koodi siisteyden ja tehokkuuden saavuttamiseksi.

Unittest- ja Pytest-kehysten yleiskatsaus

Python tarjoaa useita kehyksiä testien kirjoittamiseen ja suorittamiseen, joista Unittest ja Pytest ovat kaksi suosituimmista.

Unittest

Unittest on Pythonin sisäänrakennettu testauskehys. Unittest on luokkapohjainen ja edellyttää, että testit järjestetään luokkiin, jotka periytyvät unittest.TestCase -luokasta.

Pytest

Pytest on tehokas kolmannen osapuolen testauskehys, joka tukee yksinkertaisia testitapauksia sekä yksinkertaisiin että monimutkaisiin testiskenaarioihin. Toisin kuin Unittest, Pytest mahdollistaa testifunktioiden kirjoittamisen ilman, että niitä tarvitsee sijoittaa luokkiin.

Keskiarvon laskentafunktion testaaminen

Tarkastellaan yksinkertaista funktiota, joka laskee kahden luvun keskiarvon, ja miten sitä voidaan testata sekä Unittestillä että Pytestillä.

Testattava funktio:

1234
def calculate_average(num1, num2): return (num1 + num2) / 2 print(calculate_average(3, 5))
copy

Testaus Unittest-kirjastolla

import unittest

class TestAverageCalculation(unittest.TestCase):
    def test_average(self):
        result = calculate_average(10, 20)
        self.assertEqual(result, 15)

Testaus pytest-kirjastolla

import pytest

def test_average():
    assert calculate_average(10, 20) == 15

Vaikka Unittest on erinomainen kehittäjille, jotka tuntevat xUnit-muodon ja suosivat jäsenneltyä, olio-ohjelmointipohjaista testaustapaa, Pytest sopii niille, jotka hakevat enemmän joustavuutta ja yksinkertaisuutta sekä tehokkaita ominaisuuksia monimutkaisiin testeihin, joita Unittest ei käsittele yhtä helposti.

Nähdään seuraavassa luvussa!

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 1
some-alt