Làm thế nào để bạn bỏ qua một bài kiểm tra đơn vị trong Django?


92

Làm cách nào để bỏ qua một bài kiểm tra đơn vị trong Django?

@skipif và @skipunless là tất cả những gì tôi tìm thấy, nhưng tôi chỉ muốn bỏ qua một bài kiểm tra ngay bây giờ cho mục đích gỡ lỗi trong khi tôi đã hiểu rõ một số điều.

Câu trả lời:


147

Mô-đun mới nhất của Python có một vài trình trang trí:

Có cũ rõ ràng @skip:

from unittest import skip

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

Nếu bạn không thể sử dụng @skipvì lý do nào đó, @skipIfsẽ hoạt động. Chỉ cần lừa nó để luôn bỏ qua với đối số True:

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

tài liệu mới nhất

Tài liệu về việc bỏ qua các bài kiểm tra

Nếu bạn đang muốn đơn giản là không chạy các tệp thử nghiệm nhất định, thì cách tốt nhất có lẽ là sử dụng fabhoặc công cụ khác và chạy các thử nghiệm cụ thể.


Ahh, tôi không biết rằng bạn có thể đánh lừa người phiên dịch bằng lập luận Đúng đó. Cảm ơn!
user798719,

Bạn có thể giải thích thêm về những lý do có thể xảy ra cho việc không thể sử dụng @skip?
Kal

1
Bạn thậm chí có thể bỏ qua các lớp TestCase.
wieczorek1990

63

Django 1.10 cho phép sử dụng các thẻ cho các bài kiểm tra đơn vị. Sau đó, bạn có thể sử dụng --exclude-tag=tag_namecờ để loại trừ các thẻ nhất định:

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

Trong ví dụ trên, để loại trừ các thử nghiệm của bạn với slowthẻ "", bạn sẽ chạy:

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

Có đối lập với --exclude-tag, ví dụ, --include-tagnhưng lệnh này không tồn tại.
JohnnyQ

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.