it-swarm.com.ru

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

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

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

58
Mariusz Jamro

Вы можете передать -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 = очень подробный вывод

95
Nigel Tufnel

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

Вывод должен выглядеть примерно так:

enter image description here

Примечание: Комментарии под вашими тестами могут быть использованы даже для получения лучшего результата, чем просто имя.

например.:

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']

Затем вы получите сводную информацию о покрытии кода Nice, когда вы запустите python manage.py test, а также аккуратный html отчет в reports/cover

15
toast38coza