Django文档测试未运行
我在用django-nose运行django的文档测试时遇到了问题。虽然放在/tests目录下的单元测试可以正常运行,但文档测试却不行。
我想在我的“season”模块上运行文档测试:
python manage.py test season
但得到的输出是:
nosetests --verbosity 1 season --with-doctest
Creating test database for alias 'default'...
----------------------------------------------------------------------
Ran 0 tests in 0.001s
OK
Destroying test database for alias 'default'...
我只是想试一个基本的文档测试,看看能不能让它工作,比如:
"""
>>> 1+1 == 2
True
"""
这个代码在我的models.py文件里。我还尝试了其他的文档测试,实际上是测试代码的,但仍然没有看到任何测试被运行。当我用--verbosity 3运行时,我看到一行可能是问题所在:
nose.selector: INFO: <models.py path> is executable; skipped
不过我找不到更多关于这是什么意思的信息。
以下是settings.py中的相关片段:
INSTALLED_APPS = (
'south',
'django_nose',
'season',
)
# Django-nose configuration
TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
NOSE_ARGS = ['--with-doctest']
根据django-nose的文档,django_nose在INSTALLED_APPS中排在south之后。我使用了--with-doctest这个参数,正如这里建议的那样:Nose不运行Django文档测试,并且按照这里的建议更新了我的django-nose到最新版本:为什么django-nose不运行我模型中的文档测试?
这是我使用的版本:
django 1.3
python 2.7.1
django-nose 0.1.3
nose 1.1.2
我觉得我在基本设置上可能漏掉了一些东西。如果需要其他信息,请告诉我。非常感谢任何帮助!
3 个回答
nosetests --verbosity 1 season --with-doctest
用法:manage.py test [选项] [应用名 ...]
也许你只需要把 season
移到最后面。
这个提示信息告诉你,你的 models.py 文件被忽略了,因为它被设置成了可执行文件。这意味着你需要做以下操作:
chmod -x models.py
除非你有特别的理由让这个文件保持可执行状态,否则只需在你的 NOSE_ARGS
中添加 --exe
就可以了。
我知道提问者提到的是1.3版本,但因为这个回答在搜索“django doctests 不运行”时会出现,所以我来分享一下1.6版本的相关内容,参考自Django doctests in views.py。在这个版本的Django中,doctests是不会自动包含的,所以在$APP/tests.py里你需要这样写:
import doctest
def load_tests(loader, tests, ignore):
tests.addTests(doctest.DocTestSuite())
return tests
[这段代码只会找到tests.py文件里的doctests;如果你想在其他模块上运行doctests,比如myapp/models.py,你需要先from myapp import models
,然后再写tests.addTests(doctest.DocTestSuite(models))
]