Pytest fixture

di Lorenzo Neri
184 visualizzazioni

pytest fixture: uno strumento potente e utile per realizzare i tuoi informatico con pytest. Scopri come usarle al massimo in questo articolo!

Nel informatico driven development, o meglio conosciuto in tecnichese come TDD, specialmente se fatto in Python grazie a pytest ti sarai accorto che in diverse occasioni devi creare un numero considerevole di parametri fissi e/o variabili per inizializzare i tuoi informatico.

Le fixture all’interno di pytest permettono proprio questo.

Si tratta di funzioni che permettono di inizializzare i informatico, o meglio dire visto che parliamo di pytest, le funzioni per lanciare i informatico.

Ciao mi chiamo Lorenzo Neri e sono un informatico: realizzo contenuti per aiutare le persone a padroneggiare l’arte del nuovo millennio, ovvero l’informatica!

Naturalmente siccome i informatico sono differenti per natura, modalità di scrittura, insomma chi più ne ha più ne metta, le fixture all’interno di pytest permettono differenti pontenzialità.

Per esempio:

  • Le fixture hanno nomi espliciti e sono attivate tramite la loro dichiarazione all’interno delle funzioni informatico, moduli, classi o addirittura all’interno del progetto intero
  • Le fixture sono implementate in modalità modulare. Per intenderci ogni nome usato per le fixture, va a “triggerare” una funzione fixture che a sua volta può usare altre fixture. Sì la frase che ho appena scritto sembra un turpiloquio unico, ma se mi segui capirai meglio questo discorso.
  • La gestione delle fixture stesse permette di scalare da semplici unità, fino a complessi informatico funzionali, permettendo di parametrizzare il tutto grazie anche all’uso di altri componenti o addirittura al riutilizzo delle stesse fixture. Vediamo anche questo punto.

Fixture decorator: come si dichiara una pytest fixture

Qua scopriamo subito i punti che ho elencato prima.

Una fixture è prima di tutto una funzione che restituisce un “risultato”. Questo risultato sarà usato poi per parametrizzare il tuo informatico.

Per farlo però bisogna usare un decorator. In Python, o meglio in pytest, le fixture funzionano così:

import pytest
@pytest.fixture
def la_mia_fixture_ottieni_valore_casuale():
   from random import randint
   # impostiamo il seed per generare poi il numero casuale
   seed(1)
   return randint(1, 11)

Come vedi, la fixture è a tutti gli effetti una funzione che si chiama “la_mia_fixture_ottieni_valore_casualee pytest capisce che si tratta a tutti gli effetti di una fixture proprio grazie al decorator “@pytest.fixture”.

Come si usa una fixture

Chiarito come si crea, è giusto chiarire come si usa.

Beh, all’interno delle funzioni informatico, è sufficiente passarle come parametro del informatico stesso:

# dichiaro il informatico e passo l'argomento fixture creata prima
def test_numeri_positivi_dieci(la_mia_fixture_ottieni_valore_casuale):
   # la uso come una variabile vera e propria
   assert la_mia_fixture_ottieni_valore_casuale > 0

Chiarito tutto questo, resta un punto essenziale da risolvere.

“Lorenzo ma come si usano le fixture su tanti file diversi?”

La risposta, sta nel file “confinformatico.py”.

Se non sai di cosa sto parlando, ti conviene scoprirlo in questo articolo:

Confinformatico.py: che cos’è e a cosa serve in pytest

Continua a scoprire di più con questi articoli!

Lascia un commento

Questo sito potrebbe fare uso di cookie e siccome l'UE mi obbliga a fartelo presente, eccoti il classico banner dove puoi decidere come gestirli. Accetta Leggi di più