93

使用 Django 的命令完成测试执行后,manage.py test只有通过的测试数量会打印到控制台。

(virtualenv) G:\Project\>python manage.py test
Creating test database for alias 'default'...
True
..
----------------------------------------------------------------------
Ran 2 tests in 0.017s

OK
Destroying test database for alias 'default'...

有什么办法可以看到:

  1. 实际执行了哪些测试
  2. 从哪个模块
  3. 以什么顺序

我在文档中没有找到任何解决方案。

4

2 回答 2

153

您可以传递-v 2test命令:

python manage.py test -v 2

运行此命令后,您将得到类似的结果(我使用的是 django 2,请随意忽略迁移/数据库的内容):

Creating test database for alias 'default' ('file:memorydb_default?mode=memory&cache=shared')...
Operations to perform:
  Synchronize unmigrated apps: messages, staticfiles
  Apply all migrations: admin, auth, contenttypes, sessions
Synchronizing apps without migrations:
  Creating tables...
   Running deferred SQL...
Running migrations:
  Applying contenttypes.0001_initial... OK
  ...
  Applying sessions.0001_initial... OK
System check identified no issues (0 silenced).
test_equal_hard (polls.tests.TestHard) ... ok      <--------+
test_equal_simple (polls.tests.TestSimple) ... ok  <--------+
                                                            |
                                                            |
           That's your tests!  >----------------------------+

顺便说一句,v代表冗长(您也可以使用--verbosity=2):

python manage.py test --verbosity=2

以下是摘录python manage.py test --help

-v {0,1,2,3}, --verbosity {0,1,2,3}

详细程度;0=最小输出,1=正常输出,2=详细输出,3=非常详细输出

于 2014-02-01T16:16:30.403 回答
23

奈杰尔的回答很好,绝对是进入门槛最低的选择。但是,您可以获得更好django_nose的反馈(而且设置起来并不;)。

以下来自:BDD with Python

第一:安装一些要求:

pip install nose pinocchio django_nose

然后将以下内容添加到settings.py

TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
NOSE_ARGS = ['--with-spec', '--spec-color']

然后正常运行测试:

python manage.py test

输出应如下所示:

在此处输入图像描述

注意:测试下的注释可用于提供比名称更好的输出。

例如:

def test_something(self):
    """Something should happen"""
    ...

运行测试时将输出“应该发生的事情”。

加分项:您还可以生成/输出您的代码覆盖率:

pip install coverage

在 settings.py 中将以下内容添加到您的 NOSE_ARGS 中:'--with-coverage', '--cover-html', '--cover-package=.', '--cover-html-dir=reports/cover'

例如:

NOSE_ARGS = ['--with-spec', '--spec-color', 
         '--with-coverage', '--cover-html', 
         '--cover-package=.', '--cover-html-dir=reports/cover']

然后你会在运行时得到一个很好的代码覆盖率摘要python manage.py test以及一个简洁的 html 报告reports/cover

于 2016-02-05T12:25:02.317 回答