Skip to content

Unit Tests 🔍

Nicolò Vescera edited this page Apr 1, 2023 · 1 revision

In questa sezione verrai introdotto all'installazione delle dipendenze necessarie e al come avviare gli unit tests.

Installazione

Per installare le dipendenze necessarie assicurati prima di aver installato l'ambiente di sviluppo (vedi Dev Env). Esegui qundi

make install-test

Utilizzo

Una volta che hai installato tutto il necessario potrai avviare i test col comando

make tests

Verranno avviati i test per ogni singolo metodo implementato. Per ognuno di questo noterai che verranno stampati dei numeri, che rappresentano la durata (in secondi) del test ed una stringa:

  • ok se tutto è andato a buon fine,
  • ERROR se c'è stato un errore nel codice (e.g. import inesistente),
  • FAIL se il risultato finale non è quello desiderato,
  • skipped se il test è stato ignorato per qualche ragione.

Un esempio di output:

test_adamicadar_1 (similarity_methods.test_local.TestLocalSimilarityMethods) ... 0.0 s 
ok
test_common_neighbors_2 (similarity_methods.test_local.TestLocalSimilarityMethods) ... 12.39 s
ok
test_cosine_3 (similarity_methods.test_local.TestLocalSimilarityMethods) ... skipped 'Non è presente in scikit-network'

Datasets

Per testare i vari metodi sono stati individuati 3 diversi dataset con difficoltà (e dimensioni) incrementali:

  • 1 (easy): toy dataset House di scikit-network, una matrice di adiacenza 5x5 con 6 archi
  • 2 (medium): toy dataset Karate Club di scikit-network, una matrice di adiacenza 34x34 con 78 archi
  • 3 (hard): ego-facebook dataset, una matrice di adiacenza ~3000x3000 con 3000 archi

Tipi di Tests

Ogni test è chiamato nel seguente modo:

test_nomedelmetodo_tipoditest()

Sono definiti 4 tipologie differenti di test che possono essere individuate dal nome che segue il nome del test:

  • 1: test più semplice utilizzato solo per controllare che il metodo funzioni. Utilizza il dataset easy.
  • 2: test di media difficoltà per controllare la velocità del metodo. Utilizza il dataset medium.
  • 3: test di difficoltà alta dove il metodo, oltre a ritornare un risultato consono, deve farlo entro un limite di tempo (generalmente 5 minuti) per non essere considerato fallito. Utilizza il dataset hard.
  • time: test per quei metodi che non hanno un altro metodo già implementato con cui essere confrontati. Devono terminare l'esecuzione entro il tempo limite e devono ritornare un valore diverso da None.
Clone this wiki locally