我如何告诉django-nose我的测试在哪里?

| 我在tests目录中有针对Django应用程序的测试:
my_project/apps/my_app/
├── __init__.py
├── tests
│   ├── __init__.py
│   ├── field_tests.py
│   └── storage_tests.py
├── urls.py
├── utils.py
└── views.py
Django测试运行程序要求我将suite()函数放在应用程序的tests目录的ѭ1put文件中。该函数返回我执行时将运行的测试用例 $ python manage.py测试 我安装了django-nose。当我尝试使用django-nose运行测试时,将运行0个测试:
$ python manage.py test <app_name>
如果我直接指向测试模块,则将运行测试:
$ python manage.py test my_project.apps.my_app.tests.storage_tests
为什么django-nose的测试运行程序找不到我的测试?我必须做什么?     
已邀请:
如果使用django-nose,则可以使用简单的选择器:
from nose.selector import Selector
from nose.plugins import Plugin
import os
import django.test

class TestDiscoverySelector(Selector):
    def wantDirectory(self, dirname):
        parts = dirname.split(os.path.sep)
        return \'my_app\' in parts

    def wantClass(self, cls):
        return issubclass(cls, django.test.TestCase)

    def wantFile(self, filename):
        parts = filename.split(os.path.sep)
        return \'test\' in parts and filename.endswith(\'.py\')

    def wantModule(self, module):
        parts = module.__name__.split(\'.\')
        return \'test\' in parts

class TestDiscoveryPlugin(Plugin):
    enabled = True

    def configure(self, options, conf):
        pass

    def prepareTestLoader(self, loader):
        loader.selector = TestDiscoverySelector(loader.config)
这只是一个示例实现,您可以使其更具可配置性或根据需要进行调整。要在Django项目中使用它,只需在settigs.py中提供以下选项
NOSE_PLUGINS = [\'lorepo.utility.noseplugins.TestDiscoveryPlugin\']
    
错误:
python manage.py test my_app.tests.storage_tests:TestCase.test_name
实际上是斜杠,直到类名和文件扩展名为止 对:
python manage.py test my_app/tests/storage_tests.py:TestCase.test_name
    
如果在模块的开头添加test = True,并且方法以test_开头,则鼻子将自动拾取 了解鼻子如何检测测试http://nose.readthedocs.io/en/latest/finding_tests.html     
我也遇到过同样的情况。使用该套件,您可以运行所有测试或一个应用程序的测试,但不能运行特定的测试用例或特定的测试。 这很hacky,但是我为解决此问题所做的工作不是在ѭ1modules中定义套件,而是在所有其他测试模块中仅
import *
,这很糟糕,但是可以工作。 为了确保我不会在其他模块中破坏测试套件,我需要做一些事情...在每个测试模块中声明了“ 10”,因此仅将测试名称与*一起导入并保持pylint运行我收到有关类名重新定义的通知。 话虽如此,您应该能够在没有任何丑陋的
import *
废话的情况下正常工作...我不使用鼻子和django-nose ...(我打算很快予以纠正)...因为那是您\看起来您可以执行以下操作以运行apps目录中的所有测试:
python manage.py test apps
或为一个测试模块运行所有测试:
python manage.py test apps.my_app.tests.storage_tests
请注意,我没有在前面的示例中包括该项目……使用鼻子测试和django-nose看起来对我来说效果很好。 另外,要运行特定的测试套件,您可以执行以下操作:
python manage.py test apps.my_app.tests.storage_tests:TestCase
或运行一项特定的测试:
python manage.py test apps.my_app.tests.storage_tests:TestCase.test_name
    
为了让您意识到应用程序的位置,请将其添加到manage.py的顶部
import os, site

ROOT = os.path.dirname(os.path.abspath(__file__))
path = lambda *a: os.path.join(ROOT, *a)
site.addsitedir(path(\'apps\'))
从那时起您可以使用 python manage.py test my_app.tests.storage_tests:TestCase.test_name     

要回复问题请先登录注册