Python 2.7.1, 1.0.1 fintoQual è il modo corretto di prendere in giro una proprietà subscriptable che solleva un'eccezione quando si accede in Python 2.7?
Voglio scrivere uno unit test che fa uso delle funzionalità qui mostrata, cioè alzando con successo un IndexError quando viene effettuato un tentativo di accedere a una proprietà finto con una sintassi simile pedice so:
repo = MagicMock()
repo.heads = PropertyMock(side_effect=IndexError())
with self.assertRaises(IndexError):
_ = repo.heads['nonexistant']
Qual è il modo più pioneristico di farlo? Il codice sopra non genera affatto un IndexError, ma piuttosto un TypeError che indica che PropertyMock non è pedice.
TypeError: 'PropertyMock' object is not subscriptable
Devo notare che il test di unità reale non sembra affatto questo. Il test unitario reale sta tentando di affermare determinati comportamenti ma non può farlo senza prendere in giro una classe nel modulo di terze parti sottostante, replicando efficacemente il comportamento di quel modulo sottostante quando getitem viene richiamato sull'oggetto Repo che genera un errore IndexError.
Il contesto a parte, sono ridondante dichiarando il repository come oggetto MagicMock() e quindi repo.heads come oggetto PropertyMock? Ho lavorato duramente per la documentazione di simulazione per un po ', ma non ci sono esempi di questo caso d'uso specifico e non riesco a farlo funzionare. Ho anche provato a usare MagicMock (side_effect = IndexError()), senza alcun risultato.
Mi sembra che si dovrebbe essere in grado di facilitare semplicemente e facilmente questo comportamento in una finta e andare avanti con il loro giorno. Confido che questo sia possibile ma che non so come, ed è per questo che sto facendo questa domanda.
Qual è la vera soluzione?