如何在 Django 中跳过单元测试?

问题描述 投票:0回答:3

如何在 Django 中强制跳过单元测试?

@skipif 和 @skipunless 是我找到的全部,但我现在只想跳过测试以进行调试,同时理清一些事情。

django unit-testing skip django-unittest
3个回答
221
投票

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
或其他工具并运行特定测试。


93
投票

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

0
投票

在此处添加我的答案,因为我发现这最适合我的用例。我希望这对将来的人有帮助。

这将跳过测试,除非您专门测试标签。

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
© www.soinside.com 2019 - 2024. All rights reserved.