Как узнать, какие тесты были запущены во время команды 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. в каком порядке

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

Мариуш Ямро
источник

Ответы:

128

Вы можете перейти -v 2к testкоманде:

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

Добавьте следующее в 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

тост38коза
источник
Привет @ toast38coza. Это довольно здорово. Я новичок в Python, и мне приятно видеть хорошо отформатированный тестовый результат. Я искал документацию для NOSE_ARGS, но ничего из того, что я нашел, не показывает --With-spec и тому подобное. Не могли бы вы указать мне на это, пожалуйста? Я в основном пытаюсь предотвратить повторение носом: «Подобно TransactionTestCase, но использовать transaction.atomic()для достижения тестовой изоляции ......... nTestCase может потребоваться (например, для тестирования некоторого транзакционного поведения)».
Macario Tala
@MacarioTala аргумент --with-spec исходит от pinocchioплагина (вы можете установить его с помощью pip). Посмотрите, где написано: «сначала установите некоторые требования» выше.
toast38coza
Да. Я установил это. Тогда позвольте мне попытаться найти документацию по Буратино. Благодаря!
Macario Tala
1
В интересах обмена я заменил пиноккио, поскольку он был слишком многословным, и вместо того, чтобы его разветвлять, я нашел это: gfxmonk.net/dist/0install/rednose.xml , вам тоже может понравиться.
Macario Tala