如何查看在Django的manage.py test命令期间运行了哪些测试


80

使用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. 以什么顺序

我尚未在文档中找到任何解决方案。

Answers:


125

您可以传递-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 =非常详细输出


22

奈杰尔的答案很好,而且绝对是进入市场的最低门槛。但是,你可以得到更优质的反馈django_nose(这不是很难设置)。

以下是来自:BDD与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


嗨@ toast38coza。那很整齐。我是Python的新手,很高兴看到格式正确的测试输出。我一直在寻找NOSE_ARGS的文档,但是我发现的所有内容都没有显示--With-spec和类似内容。你能指出我这一点吗?我基本上是在试图防止鼻子重复“类似于TransactionTestCase,但用于transaction.atomic()实现测试隔离......... nTestCase可能是必需的(例如,测试某些事务行为)。”
Macario Tala

@MacarioTala --with-spec参数来自pinocchio插件(您可以点安装)。请参阅上面的内容:“首先安装一些要求”。
toast38coza

是的 我已经安装了。然后让我尝试查找有关皮诺曹的文档。谢谢!
Macario Tala

1
为了共享,我换了皮诺奇,因为它有点太冗长了,我发现它不是分叉,而是发现:gfxmonk.net/dist/0install/rednose.xml,您可能也喜欢它。
Macario Tala
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.