首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我怎么告诉django-nose我的测试在哪里?

我怎么告诉django-nose我的测试在哪里?
EN

Stack Overflow用户
提问于 2011-05-20 05:36:38
回答 5查看 6K关注 0票数 15

我在test目录中对Django应用程序进行了测试:

代码语言:javascript
复制
my_project/apps/my_app/
├── __init__.py
├── tests
│   ├── __init__.py
│   ├── field_tests.py
│   └── storage_tests.py
├── urls.py
├── utils.py
└── views.py

Django test runner要求我在应用程序的测试目录的__init__.py文件中放置一个suite()函数。该函数返回将在执行$ python manage.py测试时运行的测试用例

我安装了django-nose当我尝试使用django-nose运行测试时,运行了0个测试:

代码语言:javascript
复制
$ python manage.py test <app_name>

如果我直接指向测试模块,则运行测试:

代码语言:javascript
复制
$ python manage.py test my_project.apps.my_app.tests.storage_tests

为什么django-nose的测试运行程序找不到我的测试?我必须做什么?

EN

回答 5

Stack Overflow用户

发布于 2012-02-23 17:25:34

如果你使用django-nose,你可以使用一个简单的选择器:

代码语言:javascript
复制
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中提供以下选项

代码语言:javascript
复制
NOSE_PLUGINS = ['lorepo.utility.noseplugins.TestDiscoveryPlugin']
票数 6
EN

Stack Overflow用户

发布于 2012-05-29 22:13:31

错误:

代码语言:javascript
复制
python manage.py test my_app.tests.storage_tests:TestCase.test_name

实际上是使用斜杠,直到类名和文件的扩展名

右图:

代码语言:javascript
复制
python manage.py test my_app/tests/storage_tests.py:TestCase.test_name
票数 4
EN

Stack Overflow用户

发布于 2017-02-03 20:11:46

如果您在模块的开头添加测试= True,并且您的方法以test_开头,则nose将自动拾取

查看nose如何检测测试http://nose.readthedocs.io/en/latest/finding_tests.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6065151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档