Closed nik200122 closed 11 months ago
Question:
Sto utilizzando il tool coverage.py per calcolare la coverage dei miei casi di test. Ho una struttura dove nella directory principali ho due sottodirectory src e tests che contengono rispettivamente il codice di produzione "main.py" in src e i casi di test "test_unit.py" in tests. Se lancio coverage run -m pytest funziona tutto correttamente, ma se uso coverage run --branch tests/unit_test.py allora mi dà questo errore:
Traceback (most recent call last):
File "/Users/nik/Nicola/PythonProjects/SZZ_unisannio/tests/test_unit.py", line 5, in
Answer: L'errore che stai riscontrando indica che il modulo src non viene trovato quando si esegue il file di test test_unit.py. Questo problema si verifica perché il percorso della directory principale del tuo progetto non è nel percorso di ricerca dei moduli quando esegui il file di test.
Per risolvere questo problema, puoi seguire alcune delle seguenti opzioni:
Aggiungi il percorso al modulo principale nel sys.path: Puoi aggiungere il percorso della directory principale al sys.path all'interno del tuo file di test. Puoi farlo inserendo il seguente codice all'inizio di test_unit.py: python Copy code import sys import os
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(file), '..')))
from src.main import get_bug_fix_commits_for_szz, generate_changes_dict, get_candidate_commits Questo assicurerà che il modulo src sia nel percorso di ricerca quando esegui il file di test. Usa pytest e specifica il percorso della directory principale: Puoi anche usare pytest direttamente e specificare il percorso della directory principale come argomento. Ad esempio: bash Copy code coverage run --branch -m pytest tests/test_unit.py --doctest-modules src/ In questo modo, pytest utilizzerà il percorso specificato per cercare i moduli quando esegue i test. Scegli la soluzione che preferisci in base alle tue esigenze. Entrambe le opzioni dovrebbero risolvere il problema del modulo non trovato quando esegui i test con coverage.py.
This issue has been opened to generate the report from the CI/CD pipeline