有没有办法检查设置并仅在设置该设置时运行测试?

时间:2017-08-24 09:18:26

标签: python django

有没有办法检查设置并仅在该设置为True时运行测试? 是否可以在setup方法中执行此操作,以便在标志设置为false时不运行测试用例?

2 个答案:

答案 0 :(得分:3)

这样做的规范方法是使用skipIf and skipUnless。您可以使用它们跳过整个测试用例或特定测试。

from unittest import skipIf

from django.conf import settings
from django.test import TestCase


@skipIf(settings.MY_SETTING == 'whatever', 'ensure setting is set')
class MyTestCase(TestCase):
    # ...
    pass


class MyTestCase2(TestCase):

    @skipIf(settings.MY_SETTING == 'whatever', 'ensure setting is set')
    def test_something(self):
        # ...
        pass

答案 1 :(得分:2)

您可以通过扩展django' test命令来创建自己的test command

在那里你检查设置并优先运行测试。

from django.core.management import CommandError
from django.core.management.commands.test import Command as TestCommand


class Command(TestCommand):

    def __init__(self):
        from django.conf import settings
        try:
            if not settings.TEST_SETTING:
                raise CommandError('Command error')
        except:
            raise CommandError('Command Error')
        super(Command, self).__init__()