如何查看在Django的manage.pytesting命令中运行的testing
在使用Django的manage.py test
命令完成manage.py test
只有通过testing的数量被打印到控制台。
(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'...
有没有办法看到:
- 哪些testing实际执行
- 从什么模块
- 以什么顺序
我还没有在文档中find任何解决scheme。
您可以将-v 2
传递给test
命令:
python manage.py test -v 2
运行这个命令后,你会得到这样的东西(我使用django 1.9,可以忽略迁移/数据库的东西):
Creating test database for alias 'default' (':memory:')... Operations to perform: Synchronize unmigrated apps: staticfiles, messages Apply all migrations: admin, contenttypes, auth, sessions Synchronizing apps without migrations: Creating tables... Running deferred SQL... Running migrations: Rendering model states... DONE Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying sessions.0001_initial... OK 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 --help
的摘录python manage.py --help
:
选项:-v VERBOSITY,–verbosity = VERBOSITY
详细程度; 0 =最小输出,1 =正常输出,2 =详细输出,3 =非常详细的输出
奈杰尔的回答非常好,绝对是最低门槛的select。 不过,你可以用django_nose
得到更好的反馈(而且设置起来并不困难)。
以下是来自: 与Python的BDD
首先:安装一些要求:
pip install nose pinocchio django_nose
然后将以下内容添加到settings.py
TEST_RUNNER = 'django_nose.NoseTestSuiteRunner' NOSE_ARGS = ['--with-spec', '--spec-color']
然后像平常一样运行你的testing:
python manage.py test
输出应该是这样的:
注意:您的testing下的注释可以用来提供比名字更好的输出。
例如:
def test_something(self): """Something should happen""" ...
运行testing时会输出“应该发生的事情”。
加分:你也可以生成/输出你的代码覆盖率:
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
时,你会得到一个很好的代码覆盖总结,以及reports/cover
一个整洁的html报告