如何在 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
或其他工具并运行特定测试。
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
在此处添加我的答案,因为我发现这最适合我的用例。我希望这对将来的人有帮助。
这将跳过测试,除非您专门测试标签。
import sys
import unittest
from django.test import TestCase, tag
# These tests only run if the tag extremelySlow is used
@unittest.skipUnless('--tag=extremelySlow' in sys.argv,"Extremely slow tests only run on demand")
@tag("extremelySlow")
class ExtremeSlowTestCase(TestCase):
def test_slow_test_1(self):
self.assertTrue(True)
def test_slow_test_2(self):
self.assertTrue(True)
运行这些测试:
python manage.py test --tag=extremelySlow