Organizzazione ed Esecuzione dei Test con pytest
Scorri per mostrare il menu
Quando si desidera scrivere codice di test pulito, espressivo e facilmente manutenibile in Python, pytest è una scelta popolare. A differenza del framework integrato unittest, che segue una struttura rigida basata su classi e richiede metodi di asserzione specifici come self.assertEqual, pytest consente di utilizzare le normali istruzioni assert di Python all'interno di semplici funzioni. Questo riduce drasticamente il codice boilerplate e rende i test più concisi, poiché non è più necessario racchiudere la logica in complesse gerarchie di classi o memorizzare decine di nomi di asserzioni specifici del framework solo per verificare un semplice risultato.
Una delle funzionalità più potenti di pytest è il suo sistema di individuazione automatica dei test. Semplicemente eseguendo pytest nella directory del progetto, verranno automaticamente trovati tutti i file che corrispondono al pattern test_*.py o *_test.py ed eseguite tutte le funzioni all'interno di questi file che iniziano con test_. Questo significa che non è necessario specificare manualmente quali test eseguire: pytest se ne occupa automaticamente.
Un altro vantaggio chiave è l'uso dei fixture. I fixture gestiscono la preparazione e la pulizia delle risorse necessarie ai test, come file temporanei o collegamenti a database, in modo semplice da riutilizzare. Basta decorare una funzione con @pytest.fixture e poi richiederla come input nelle funzioni di test. Questo mantiene il codice modulare ed evita di ripetere la stessa logica di setup.
Per iniziare con pytest, è necessario prima installarlo. Utilizzare il seguente comando nel terminale:
pip install pytest
Questo comando scaricherà e installerà l'ultima versione di pytest, permettendo di iniziare subito a scrivere ed eseguire i test.
Ecco una dimostrazione pratica su come utilizzarlo per scrivere test basati su funzioni e definire fixture riutilizzabili.
import pytest
# A simple function to test
def add(a, b):
return a + b
# Define a fixture that provides test data
@pytest.fixture
def sample_numbers():
return (3, 5)
# Test function using the fixture
def test_add_with_fixture(sample_numbers):
a, b = sample_numbers
result = add(a, b)
assert result == 8
# Another simple test function
def test_add_negative_numbers():
assert add(-2, -4) == -6
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione