xruben136x / SZZ_unisannio

Implementation of SZZ Algorithm
Mozilla Public License 2.0
4 stars 0 forks source link

Report generation #36

Closed nik200122 closed 11 months ago

nik200122 commented 11 months ago

This issue has been opened to generate the report from the CI/CD pipeline

nik200122 commented 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 from src.main import get_bug_fix_commits_for_szz, generate_changes_dict, get_candidate_commits, \ ModuleNotFoundError: No module named 'src'

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

Aggiungi il percorso della directory principale al sys.path

sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(file), '..')))

Importa il modulo principale

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.