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


92

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

我发现了@skipif和@skipunless,但是我只是想跳过一下测试以进行调试,同时弄清了一些事情。

Answers:


147

Python的unittest模块具有一些装饰器:

有朴素的旧@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或其他工具来运行特定的测试。


啊,我不知道您可以用True参数欺骗解释器。谢谢!
user798719 2013年

您能否详细说明无法使用的可能原因@skip
卡尔

1
您甚至可以跳过TestCase类。
wieczorek1990

63

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.