Bagaimana Anda melewatkan pengujian unit di Django?

96

Bagaimana secara paksa melewati pengujian unit di Django?

@skipif dan @skipunless adalah semua yang saya temukan, tetapi saya hanya ingin melewatkan pengujian sekarang untuk keperluan debugging sementara saya membereskan beberapa hal.

pengguna798719
sumber

Jawaban:

152

Modul ter-unittest Python memiliki beberapa dekorator:

Ada tua biasa @skip:

from unittest import skip

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

Jika Anda tidak dapat menggunakan @skipkarena alasan tertentu, @skipIfharus bekerja. Trik saja untuk selalu melewati dengan argumen True:

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

dokumen unittest

Dokumen tentang melewatkan tes

Jika Anda tidak ingin menjalankan file pengujian tertentu, cara terbaik mungkin adalah menggunakan fabatau alat lain dan menjalankan pengujian tertentu.

Ray Toal
sumber
Ahh, saya tidak tahu bahwa Anda bisa menipu penerjemah dengan argumen Benar itu. Terima kasih!
user798719
Bisakah Anda menjelaskan tentang kemungkinan alasan tidak dapat menggunakan @skip?
Kal
1
Anda bahkan dapat melewati kelas TestCase.
wieczorek1990
69

Django 1.10 mengizinkan penggunaan tag untuk pengujian unit. Anda kemudian dapat menggunakan --exclude-tag=tag_namebendera tersebut untuk mengecualikan tag tertentu:

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):
        ...

Pada contoh di atas, untuk mengecualikan pengujian Anda dengan slowtag " ", Anda akan menjalankan:

$ ./manage.py test --exclude-tag=slow
YPCrumble
sumber
Apakah ada kebalikan dari --exclude-tag, misalnya --include-tagtetapi perintah ini tidak ada.
JohnnyQ