django 解决方案可以像here
您将依赖于上下文的测试移动到单独的应用程序并排除它。然后实现这个跑步者:TEST_RUNNER = 'testing.simple.AdvancedTestSuiteRunner'
from django.test.simple import DjangoTestSuiteRunner #@UnresolvedImport
import logging
from django.conf import settings
EXCLUDED_APPS = getattr(settings, 'TEST_EXCLUDE', [])
class AdvancedTestSuiteRunner(DjangoTestSuiteRunner):
def __init__(self, *args, **kwargs):
from django.conf import settings
settings.TESTING = True
south_log = logging.getLogger("south")
south_log.setLevel(logging.WARNING)
super(AdvancedTestSuiteRunner, self).__init__(*args, **kwargs)
def build_suite(self, *args, **kwargs):
suite = super(AdvancedTestSuiteRunner, self).build_suite(*args, **kwargs)
if not args[0] and not getattr(settings, 'RUN_ALL_TESTS', False):
tests = []
for case in suite:
pkg = case.__class__.__module__.split('.')[0]
if pkg not in EXCLUDED_APPS:
tests.append(case)
suite._tests = tests
return suite
当明确添加到命令时,应用程序不会被忽略'python manage.py test south'
或者使用鼻子测试
他们有类别
@attr(speed='slow')
class MyTestCase:
def test_long_integration(self):
pass
def test_end_to_end_something(self):
pass
来自docs
-a=ATTR, --attr=ATTR
仅运行具有 ATTR [NOSE_ATTR] 指定属性的测试
-A=EXPR, --eval-attr=EXPR
仅针对其属性运行 Python 表达式 EXPR 计算结果为 True [NOSE_EVAL_ATTR]
的测试