KeyError solo durante esecuzione di unit test

sinisimattia (840 points)
0 3 8
asked Nov 26, 2020 in HW6 obbligatorio by sinisimattia (840 points)
Buon pomeriggio a tutti,

sto avendo problemi con i test, in particolare con i dizionari.

Se eseguo il mio programma normalmente l'utilizzo di una tupla come chiave del dizionario non da problemi, quando eseguo gli unit test, invece, mi da un KeyError

Per caso qualcuno sa se questo è un problema con la mia configurazione?

Grazie in anticipo
152 views

3 Answers

andrea_25 (6070 points)
2 2 24
answered Nov 26, 2020 by andrea_25 (6,070 points)
Probabilmente il problema è dovuto al fatto che stai cercando di accedere ad una chiave che non si trova nel dizionario quando fai i test.

Controlla bene la logica dei vari passaggi del flusso del tuo programma.
sinisimattia (840 points)
0 3 8
commented Nov 26, 2020 by sinisimattia (840 points)
Assolutamente, la cosa strana è che se eseguo il programma normalmente questo errore non si presenta. è esclusivo ai test
andrea_25 (6070 points)
2 2 24
commented Nov 26, 2020 by andrea_25 (6,070 points)
E' molto strano, perché anche io uso dei dizionari che hanno tuple come chiavi nel mio programma e non mi dà nessun problema quando eseguo i test tramite anaconda prompt o direttamente da spyder
T
Tobia (1580 points)
1 10 18
answered Nov 26, 2020 by Tobia (1,580 points)
ti amo pure a me fa questa cosa, ora che so che non sono l'unico smetto di cercare di risolvere perchè so che il problema non sono io
T
Tobia (1580 points)
1 10 18
answered Nov 27, 2020 by Tobia (1,580 points)
Sono riuscito a risolvere grazie all'aiuto di un altro ragazzo; il problema era che avevo dato come argomento opzionale alla funzione una lista vuota, e quindi sballava i test, cambiato quello ora va
andrea.sterbini (172680 points)
511 927 1776
commented Nov 27, 2020 by andrea.sterbini (172,680 points)
Un consiglio: NON usate parametri opzionali con valori MUTABILI (liste, set, dizionari) .... vi generano errori difficili da individuare perchè quel valore di inizializzazione NON viene ricreato ad ogni chiamata ma viene creato una volta per tutte e crea effetti collaterali tra le diverse chiamate
m
massimocoppola (950 points)
1 15 20
commented Dec 14, 2020 by massimocoppola (950 points)
#RIPOSTO LA QUESTIONE IN HOMEWORK8

Mi trovo anche io nella stessa situazione, credo.

Ho un nested dictionary e mi capita di fare

inizializzo dizionario ad ogni chiamata ricorsiva:

dizionario = {stringa1: { } }, stringa2: { } }

ricavo stringa_x

se stringa_x in dizionario[stringa1]

i test mi lanciano un key error. le soluzioni stampate sono corrette.

cosa posso fare?