In che modo è possibile disattivare temporaneamente i singoli test dell'unità quando si utilizza il modulo unittest
in Python?Disabilitare temporaneamente i singoli test delle unità Python
risposta
Singoli metodi di prova o classi possono essere disabilitati utilizzando il decoratore unittest.skip
.
@unittest.skip("reason for skipping")
def test_foo():
print('This is foo test case.')
@unittest.skip # no reason needed
def test_bar():
print('This is bar test case.')
Per altre opzioni, consultare i documenti per Skipping tests and expected failures.
The latest version (2.7 - unreleased) supports test skipping/disabling like so. Potresti semplicemente prendere questo modulo e usarlo nella tua installazione Python esistente. Probabilmente funzionerà.
Prima di questo, ero solito rinominare i test che volevo passare a xtest_testname
da test_testname
.
Ecco uno script elisp rapido per eseguire questa operazione. Il mio elis è un po 'arrugginito quindi mi scuso in anticipo per eventuali problemi che ha. Non testato.
(defun disable_enable_test()
(interactive "")
(save-excursion
(beginning-of-line)
(search-forward "def")
(forward-char)
(if (looking-at "disable_")
(zap-to-char 1 ?_)
(insert "disable_"))))
+1, ma nell'intero progetto che sto lavorando tutti stanno usando python v2.6.2, e non credo che cambierà: /, ma è una soluzione, grazie – coelhudo
Rinominare per ora. grazie – coelhudo
Potresti modificare un po 'il tuo editor per darti una macro per abilitare/disabilitare un testcase ma parlo come utente di Emacs quindi ... :) –
È possibile utilizzare decoratori per disabilitare il test che può avvolgere la funzione e prevenire la googletest o pitone unit test per eseguire il TestCase.
def disabled(f):
def _decorator():
print f.__name__ + ' has been disabled'
return _decorator
@disabled
def testFoo():
'''Foo test case'''
print 'this is foo test case'
testFoo()
uscita:
testFoo has been disabled
Ho appena rinominare un metodo di test case con una sottolineatura: test_myfunc diventa _test_myfunc.
È sufficiente posizionare il decoratore @unittest.SkipTest
sopra il test.
Non so chi sia stato. Ma stavo leggendo la documentazione e dice che SkipTest è un'eccezione. In ogni caso, è diverso da unittest.skip nel senso che skip non esegue mai il test (disabilitandolo), mentre lo scopo SkipTest deve essere generato se qualcosa non è previsto mentre il test è in esecuzione. Ho ragione? Interessante duro. – coelhudo
'unittest.skip' (senza motivo) mi dà errore in Python 2 ma non in Python 3. – Akif
In Python 3, la risposta di Akif sotto '@ unittest.SkipTest' funziona e non' @ unittest.skip' – lifebalance
Sto usando Python 3.6.1 e '@ unittest.skip' funziona anche bene. – Pete
@Pete, in Python 3.4.0, '@ unittest.skip' non funziona. – lifebalance