Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Introduzione al Testing in Python | Padronanza del Framework Pytest
Programmazione Strutturale in Python

bookIntroduzione al Testing in Python

Nella sezione Gestione degli Errori, abbiamo esaminato come gestire sia gli errori di sintassi che quelli di runtime, ma non abbiamo approfondito la gestione degli errori logici. In questa sezione, esploreremo due tipi di test fondamentali per la validazione della logica delle nostre applicazioni: il testing manuale e quello automatico.

Il testing si suddivide principalmente in queste due categorie. Il testing manuale prevede che tester umani eseguano i test interagendo con l'applicazione e verifichino la correttezza delle sue funzionalità in base ai requisiti. Questo tipo di test è utile ma può richiedere molto tempo ed essere soggetto a errori umani.

Il testing automatico, invece, utilizza script e strumenti per eseguire i test automaticamente, senza intervento umano diretto, garantendo che l'applicazione si comporti come previsto. Questo non solo accelera il processo di test, ma ne aumenta anche l'accuratezza e la coerenza.

Introduzione al Test-Driven Development (TDD)

Una metodologia chiave nel testing automatico è il Test-Driven Development (TDD). Il TDD è un processo di sviluppo innovativo in cui i test vengono scritti prima del codice vero e proprio. Il processo segue un ciclo semplice: scrivere un test, eseguire il test (che inizialmente dovrebbe fallire), scrivere il minimo codice necessario per superare il test e poi rifattorizzare il codice per soddisfare gli standard di pulizia ed efficienza.

Panoramica dei framework Unittest e Pytest

Python offre diversi framework per scrivere ed eseguire test, tra cui Unittest e Pytest sono tra i più popolari.

Unittest

Unittest è il framework di testing integrato di Python. Unittest è basato su classi e richiede che i test vengano organizzati in classi come sottoclassi di unittest.TestCase.

Pytest

Pytest è un potente framework di testing di terze parti che supporta casi di test più semplici sia per scenari semplici che complessi. A differenza di Unittest, Pytest consente di scrivere funzioni di test senza doverle racchiudere in classi.

Test di una funzione di calcolo della media

Consideriamo una semplice funzione che calcola la media di due numeri e vediamo come può essere testata sia con Unittest che con Pytest.

Funzione da testare:

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

Test con Unittest

import unittest

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

Test con pytest

import pytest

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

Mentre Unittest è eccellente per gli sviluppatori che conoscono il formato xUnit e preferiscono un approccio strutturato e orientato agli oggetti per il testing, Pytest è adatto a chi cerca maggiore flessibilità e semplicità, insieme a funzionalità potenti per test complessi che non sono facilmente gestibili con Unittest.

Ci vediamo nel prossimo capitolo!

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 1

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Suggested prompts:

Can you explain more about logical errors and how to detect them?

What are the main differences between manual and automated testing?

Could you provide more examples of using Unittest and Pytest?

bookIntroduzione al Testing in Python

Scorri per mostrare il menu

Nella sezione Gestione degli Errori, abbiamo esaminato come gestire sia gli errori di sintassi che quelli di runtime, ma non abbiamo approfondito la gestione degli errori logici. In questa sezione, esploreremo due tipi di test fondamentali per la validazione della logica delle nostre applicazioni: il testing manuale e quello automatico.

Il testing si suddivide principalmente in queste due categorie. Il testing manuale prevede che tester umani eseguano i test interagendo con l'applicazione e verifichino la correttezza delle sue funzionalità in base ai requisiti. Questo tipo di test è utile ma può richiedere molto tempo ed essere soggetto a errori umani.

Il testing automatico, invece, utilizza script e strumenti per eseguire i test automaticamente, senza intervento umano diretto, garantendo che l'applicazione si comporti come previsto. Questo non solo accelera il processo di test, ma ne aumenta anche l'accuratezza e la coerenza.

Introduzione al Test-Driven Development (TDD)

Una metodologia chiave nel testing automatico è il Test-Driven Development (TDD). Il TDD è un processo di sviluppo innovativo in cui i test vengono scritti prima del codice vero e proprio. Il processo segue un ciclo semplice: scrivere un test, eseguire il test (che inizialmente dovrebbe fallire), scrivere il minimo codice necessario per superare il test e poi rifattorizzare il codice per soddisfare gli standard di pulizia ed efficienza.

Panoramica dei framework Unittest e Pytest

Python offre diversi framework per scrivere ed eseguire test, tra cui Unittest e Pytest sono tra i più popolari.

Unittest

Unittest è il framework di testing integrato di Python. Unittest è basato su classi e richiede che i test vengano organizzati in classi come sottoclassi di unittest.TestCase.

Pytest

Pytest è un potente framework di testing di terze parti che supporta casi di test più semplici sia per scenari semplici che complessi. A differenza di Unittest, Pytest consente di scrivere funzioni di test senza doverle racchiudere in classi.

Test di una funzione di calcolo della media

Consideriamo una semplice funzione che calcola la media di due numeri e vediamo come può essere testata sia con Unittest che con Pytest.

Funzione da testare:

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

Test con Unittest

import unittest

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

Test con pytest

import pytest

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

Mentre Unittest è eccellente per gli sviluppatori che conoscono il formato xUnit e preferiscono un approccio strutturato e orientato agli oggetti per il testing, Pytest è adatto a chi cerca maggiore flessibilità e semplicità, insieme a funzionalità potenti per test complessi che non sono facilmente gestibili con Unittest.

Ci vediamo nel prossimo capitolo!

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 1
some-alt