Django'da bir birim testini nasıl atlarsınız?


96

Django'da bir birim testini zorla nasıl atlarsınız?

Bulduğum tek şey @skipif ve @skipunless, ancak birkaç şeyi düzeltirken şu anda hata ayıklama amacıyla bir testi atlamak istiyorum.

Yanıtlar:


152

Python'un birim test modülünde birkaç dekoratör bulunur:

Düz eski var @skip:

from unittest import skip

@skip("Don't want to test")
def test_something():
    ...

Herhangi bir @skipnedenle kullanamıyorsanız , @skipIfçalışmalısınız. Her zaman argümanla atlamak için kandırın True:

@skipIf(True, "I don't want to run this test yet")
def test_something():
    ...

unittest belgeleri

Testlerin atlanmasına ilişkin belgeler

Belirli test dosyalarını çalıştırmak istemiyorsanız, en iyi yol muhtemelen fabveya başka bir aracı kullanmak ve belirli testleri çalıştırmaktır.


Ahh, bu Doğru argümanıyla tercümanı kandırabileceğini bilmiyordum. Teşekkürler!
user798719

Kullanamamanın olası nedenlerini açıklar @skipmısınız?
Kal

1
TestCase sınıflarını bile atlayabilirsiniz.
wieczorek1990

70

Django 1.10 , birim testleri için etiket kullanımına izin verir . Ardından, --exclude-tag=tag_namebelirli etiketleri hariç tutmak için bayrağı kullanabilirsiniz :

from django.test import tag

class SampleTestCase(TestCase):

    @tag('fast')
    def test_fast(self):
        ...

    @tag('slow')
    def test_slow(self):
        ...

    @tag('slow', 'core')
    def test_slow_but_core(self):
        ...

Yukarıdaki örnekte, testlerinizi " slow" etiketiyle hariç tutmak için çalıştırmanız gerekir:

$ ./manage.py test --exclude-tag=slow

Bunun tersi var mı --exclude-tag, örneğin, --include-tagancak bu komut yok.
JohnnyQ

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.