Django의 manage.py 테스트 명령 중에 실행 된 테스트를 확인하는 방법


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!  >----------------------------+

그건 그렇고, vverbosity를 의미합니다 (당신은 또한 사용할 수 있습니다 --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

Nigel의 대답은 훌륭하고 확실히 진입 장벽이 가장 낮습니다. 그러나 더 나은 피드백을 얻을 수 있습니다django_nose (그리고 설정 하는 것은 그리 어렵지 않습니다 ).

아래는 출처 : BDD with 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

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과 깔끔한 ​​HTML 보고서를reports/cover


안녕하세요 @ toast38coza. 꽤 깔끔합니다. 저는 Python을 처음 접했고 잘 형식화 된 테스트 출력을 보는 것이 좋습니다. 나는 NOSE_ARGS에 대한 문서를 찾고 있었지만 내가 찾은 것 중 어떤 것도-스펙과 비슷한 것을 보여주지 못했습니다. 저에게 제발 알려 주시겠습니까? 기본적으로 "TransactionTestCase와 유사하지만 transaction.atomic()테스트 격리를 달성하기 위해 사용 합니다 .......... nTestCase가 필요할 수 있습니다 (예 : 일부 트랜잭션 동작 테스트) "가 반복되는 것을 방지하려고합니다 .
Macario Tala

@MacarioTala --with-spec 인수는 pinocchio플러그인 에서 제공됩니다 (설치할 수 있습니다). 위의 "일부 요구 사항을 먼저 설치"라고 표시된 위치를 참조하십시오.
toast38coza

네. 나는 그것을 설치했다. 그럼 피노키오에 관한 문서를 찾아 보겠습니다. 감사!
Macario Tala

1
공유를 위해 나는 너무 장황한 피노키오를 교체했고, 포크 대신 이것을 발견했습니다 : gfxmonk.net/dist/0install/rednose.xml , 당신도 좋아할 것입니다.
Macario Tala
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.