บังคับให้ข้ามการทดสอบหน่วยใน Django ได้อย่างไร
@skipif และ @skipunless คือทั้งหมดที่ฉันพบ แต่ฉันแค่ต้องการข้ามการทดสอบในตอนนี้เพื่อจุดประสงค์ในการดีบักในขณะที่ฉันได้รับบางสิ่งที่ตรงไปตรงมา
บังคับให้ข้ามการทดสอบหน่วยใน Django ได้อย่างไร
@skipif และ @skipunless คือทั้งหมดที่ฉันพบ แต่ฉันแค่ต้องการข้ามการทดสอบในตอนนี้เพื่อจุดประสงค์ในการดีบักในขณะที่ฉันได้รับบางสิ่งที่ตรงไปตรงมา
คำตอบ:
โมดูลที่ไม่เหมาะสมที่สุดของ 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
หรือเครื่องมืออื่น ๆ และทำการทดสอบโดยเฉพาะ
@skip
หรือไม่?
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
แต่คำสั่งนี้ไม่มีอยู่จริง