Подтвердить что ты не робот

Как проверить, какие тесты выполнялись во время команды Django manage.py test

После завершения выполнения тестов с использованием команды 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'...

Есть ли способ увидеть:

  • какие тесты были фактически выполнены
  • из какого модуля
  • в каком порядке

Я не нашел решения в документе.

4b9b3361

Ответ 1

Вы можете передать -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 your tests!  >----------------------------+

Кстати, v означает многословие (вы также можете использовать --verbosity=2):

python manage.py test --verbosity=2

Здесь выдержка из python manage.py --help:

Опции: -v VERBOSITY, --verbosity = VERBOSITY

Уровень детализации; 0 = минимальный выход, 1 = нормальный выход, 2 = подробный вывод, 3 = очень подробный вывод

Ответ 2

Ответ на Найджел велик и, безусловно, самый низкий барьер для входа. Тем не менее, вы можете получить еще лучшую обратную связь с помощью 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

Добавьте в свой NOSE_ARGS в settings.py: '--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