Yanıtlar:
Ayrı test yöntemleri veya sınıfları, unittest.skip
dekoratör kullanılarak devre dışı bırakılabilir .
@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.')
Diğer seçenekler için, Testleri atlama ve beklenen hatalar için dokümanlara bakın .
@unittest.skip
aynı zamanda iyi çalışıyor.
@unittest.skip
çalışmıyor.
Dekoratörleri, işlevi sarmalayabilen ve googletest veya python birim testinin test senaryosunu çalıştırmasını engelleyen testi devre dışı bırakmak için kullanabilirsiniz.
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()
Çıktı:
testFoo has been disabled
En son sürüm (2.7 - yayınlanmamış) bu şekilde testi atlama / devre dışı bırakmayı destekler . Bu modülü alıp mevcut Python kurulumunuzda kullanabilirsiniz. Muhtemelen işe yarayacak.
Bundan önce, istediğim için atlanır testleri adlandırmak için kullanılır xtest_testname
dan test_testname
.
İşte bunu yapmak için hızlı bir elisp betiği. Benim elisp'im biraz paslanmış, bu yüzden sahip olduğu herhangi bir sorun için şimdiden özür dilerim. Test edilmemiş.
(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_"))))
@unittest.SkipTest
Dekoratörü testin üzerine yerleştirmek yeterlidir.
unittest.skip
(sebepsiz) Python 2'de bana hata veriyor fakat Python 3'te
Sorunun "geçici olarak devre dışı bırakılan" kısmına odaklanıldığında, en iyi yanıt bir şekilde kullanım durumuna bağlıdır. Beni buraya getiren kullanım durumu, bir fonksiyon üzerinde test odaklı geliştirme yapıyorum. Bu süreçte, art arda testler yazıyorum ve hata ayıklama için işlevde sık sık kesme noktaları kullanıyorum. Test çalıştırıcısını her çalıştırdığımda tüm testleri çalıştırırsam, zaten çalışan testler için kırılma noktalarında dururum. Test adını veya benzeri bir şeyi "atla" veya munging eklemek istediğim şey değil çünkü işlevi yazmayı bitirdiğimde tüm testlerin çalışmasını istiyorum. "Atla" seçeneğini kullanırsam, geri dönüp "atlamayı geri almam" gerekir.
Benim kullanım durumum için çözüm, test kodunda değil test çalıştırıcısında yatıyor. Kullandığım pytest . Pytest ile komut satırından tek bir test belirlemek kolaydır:
pytest PYTHON_FILENAME.TEST_CLASS.TEST_NAME
(büyük harfleri değerlerinizle değiştirin).
Bu sorunun python-unitest için olduğunu anlıyorum. Bunu uzun zamandır kullanmadım. Pytest'e benzer bir şey olsa şaşırmam. Değilse, kolayca pytest'e geçebilirsiniz. Kodunuzu değiştirmenize gerek yoktur. Sadece kurun ve test çalıştırıcı komutunuzu değiştirin.
Ayrıca PyCharm Pro kullanıyorum. Test kodumu gösteren sayfada, her test için def'in yanında küçük bir simge var. Bu simgeye tıklayıp o testi tek tek çalıştırabilirim.
@unittest.SkipTest
işe yarıyor ama işe@unittest.skip