Як побачити, які тести були запущені під час командної перевірки Django manage.py


80

Після завершення тестування за допомогою manage.py testкоманди Django на консоль друкується лише кількість пройдених тестів.

(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}, - багатослівність {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


Привіт @ toast38coza. Це досить акуратно. Я новачок у Python, і приємно бачити добре відформатований тестовий результат. Я шукав документацію для NOSE_ARGS, але жодне з того, що я знайшов, не показує --With-spec та подібне. Не могли б ви вказати мені на це, будь ласка? В основному я намагаюся запобігти повторенню носа "Подібно TransactionTestCase, але використовуйте transaction.atomic()для досягнення тестової ізоляції ......... nTestCase може знадобитися (наприклад, тестування деякої поведінки транзакцій)."
Macario Tala

@MacarioTala - аргумент --with-spec походить від pinocchioплагіна (його можна встановити за допомогою pip). Подивіться, де написано: "спочатку встановіть деякі вимоги" вище.
toast38coza

Так. Я це встановив. Тоді дозвольте мені спробувати знайти документацію щодо буратіно. Дякую!
Макаріо Тала

1
В інтересах обміну я замінив буратіно, оскільки воно було занадто багатослівним, і замість того, щоб розгалужити його, я знайшов таке: gfxmonk.net/dist/0install/rednose.xml , воно може вам також сподобатися.
Макаріо Тала
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.