คุณจะข้ามการทดสอบหน่วยใน Django ได้อย่างไร


96

บังคับให้ข้ามการทดสอบหน่วยใน Django ได้อย่างไร

@skipif และ @skipunless คือทั้งหมดที่ฉันพบ แต่ฉันแค่ต้องการข้ามการทดสอบในตอนนี้เพื่อจุดประสงค์ในการดีบักในขณะที่ฉันได้รับบางสิ่งที่ตรงไปตรงมา

คำตอบ:


152

โมดูลที่ไม่เหมาะสมที่สุดของ Python มีนักตกแต่งไม่กี่คน:

มีความเก่าธรรมดา@skip:

from unittest import skip

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

หากคุณไม่สามารถใช้@skipด้วยเหตุผลบางประการ@skipIfควรใช้งานได้ เพียงแค่หลอกให้ข้ามกับอาร์กิวเมนต์เสมอTrue:

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

เอกสารที่ไม่สำคัญที่สุด

เอกสารเกี่ยวกับการข้ามการทดสอบ

หากคุณต้องการเพียงแค่ไม่เรียกใช้ไฟล์ทดสอบบางไฟล์วิธีที่ดีที่สุดคือใช้fabหรือเครื่องมืออื่น ๆ และทำการทดสอบโดยเฉพาะ


ฉันไม่รู้ว่าคุณหลอกล่ามด้วยข้อโต้แย้งที่แท้จริงนั้นได้ ขอบคุณ!
user798719

คุณช่วยอธิบายเหตุผลที่เป็นไปได้ที่ไม่สามารถใช้งานได้@skipหรือไม่?
Kal

1
คุณสามารถข้ามคลาส TestCase ได้
wieczorek1990

69

Django 1.10 อนุญาตให้ใช้แท็กสำหรับการทดสอบหน่วย จากนั้นคุณสามารถใช้--exclude-tag=tag_nameแฟล็กเพื่อยกเว้นบางแท็ก:

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

ในตัวอย่างข้างต้นหากต้องการยกเว้นการทดสอบของคุณด้วยslowแท็ก "" ที่คุณจะเรียกใช้:

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

ตรงข้าม--exclude-tagหรือไม่เช่น--include-tagแต่คำสั่งนี้ไม่มีอยู่จริง
JohnnyQ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.