Sì. sys.exit
solleva SystemExit
, in modo da poter verificare con assertRaises
:
with self.assertRaises(SystemExit):
your_method()
istanze di SystemExit
avere un attributo code
che è impostato per lo stato di uscita proposto, e il direttore contesto restituito dal assertRaises
ha l'istanza di eccezione intercettata come exception
, in modo da controllare lo stato di uscita è facile:
with self.assertRaises(SystemExit) as cm:
your_method()
self.assertEqual(cm.exception.code, 1)
sys.exit Documentation:
Uscita da Python. Questo è implementato sollevando l'eccezione SystemExit
... è possibile intercettare il tentativo di uscita a un livello esterno.
fonte
2013-03-28 00:30:49
+1, eccetto che se vuole verificare che chiami 'sys.exit (1)' (al contrario di, per esempio, 'sys.exit (0)') devi effettivamente affermare che il suo 'codice' è 1. Immagino che potresti farlo con 'assertRaisesRegexp (SystemExit, '1')'? – abarnert
Stavo proprio modificando quello in :) –
Ero sicuro che esistesse un metodo 'unittest' che ti permettesse di passare un'eccezione e un predicato eseguibile _ per l'esecuzione sull'eccezione o sui suoi argomenti, piuttosto che solo un _regex pattern_ da eseguire sulla stringa rappresentazione del suo primo argomento ... ma immagino di no. C'è qualche altro modulo di test a cui sto pensando? – abarnert