我正在使用Nose和Django(以及django-nose),我收到一份非常奇怪的报道:
$ python3 manage.py test lists
nosetests lists --with-coverage --cover-package=lists,superlists --verbosity=1
Creating test database for alias 'default'...
............
Name Stmts Miss Cover Missing
---------------------------------------------------------------------------
lists.py 0 0 100%
lists\admin.py 0 0 100%
lists\migrations\0001_initial.py 5 0 100%
lists\migrations\0002_item_text.py 5 0 100%
lists\migrations\0003_list.py 5 0 100%
lists\migrations\0004_item_list.py 5 0 100%
lists\migrations\0005_auto_20151117_1835.py 5 0 100%
lists\migrations.py 0 0 100%
lists\models.py 6 6 0% 1-12
lists\urls.py 3 0 100%
lists\views.py 23 0 100%
superlists.py 0 0 100%
superlists\settings.py 19 19 0% 14-113
superlists\urls.py 5 0 100%
---------------------------------------------------------------------------
TOTAL 81 25 69%
----------------------------------------------------------------------
Ran 12 tests in 0.073s
我的设置配置为:
TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
NOSE_ARGS = [
'--with-coverage',
'--cover-package=lists,superlists',
]
这些显然是在阅读,因为它设法应用参数并查看我的lists
和superlists
(我正在使用Python书籍进行TDD)应用程序就好了。但是,出于某种原因,它说它没有覆盖任何settings.py
文件或我的lists/models.py
;非常简单的类,只有一些字段定义,没有函数,没有方法。如果是'根级' class在模块中并被导入,其所有类属性和方法签名(def x(...):
行)都成功执行,否则会立即崩溃。
必须执行设置文件,否则Django甚至无法运行。为什么覆盖率报告和模型未命中?
答案 0 :(得分:0)
最可能的答案是,在导入 设置文件后,django-nose会触发(因为manage.py test
命令本身在运行测试之前运行django设置代码)。因此,在此设置过程中评估的任何代码都不包含在coverage结果中。
您可能需要查看相关问题的this answer,以获得更详细的说明。希望这有帮助!