Cách xem thử nghiệm nào đã được chạy trong lệnh thử nghiệm management.py của Django


80

Sau khi kết thúc quá trình thực thi kiểm tra bằng manage.py testlệnh của Django, chỉ số kiểm tra đã vượt qua được in ra bảng điều khiển.

(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'...

Có cách nào để xem:

  1. những bài kiểm tra nào đã thực sự được thực hiện
  2. từ mô-đun nào
  3. theo thứ tự

Tôi không tìm thấy giải pháp nào trong tài liệu.

Câu trả lời:


128

Bạn có thể chuyển -v 2đến testlệnh:

python manage.py test -v 2

Sau khi chạy lệnh này, bạn sẽ nhận được một cái gì đó giống như thế này (Tôi đang sử dụng django 2, vui lòng bỏ qua di chuyển / nội dung cơ sở dữ liệu):

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

Nhân tiện, vviết tắt của verbosity (Bạn cũng có thể sử dụng --verbosity=2):

python manage.py test --verbosity=2

Đây là đoạn trích từ python manage.py test --help:

-v {0,1,2,3}, --verbosity {0,1,2,3}

Mức độ chi tiết; 0 = đầu ra tối thiểu, 1 = đầu ra bình thường, 2 = đầu ra dài dòng, 3 = đầu ra rất dài


22

Câu trả lời của Nigel là tuyệt vời và chắc chắn là rào cản thấp nhất đối với lựa chọn gia nhập. Tuy nhiên, bạn có thể nhận được phản hồi tốt hơn với django_nose(và nó không phải khó khăn để thiết lập;).

Dưới đây là từ: BDD với Python

Đầu tiên: cài đặt một số yêu cầu:

pip install nose pinocchio django_nose

Sau đó, thêm phần sau vào settings.py

TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
NOSE_ARGS = ['--with-spec', '--spec-color']

Sau đó chạy các bài kiểm tra của bạn như bình thường:

python manage.py test

Đầu ra sẽ giống như sau:

nhập mô tả hình ảnh ở đây

Lưu ý: Các nhận xét trong bài kiểm tra của bạn có thể được sử dụng để đưa ra kết quả tốt hơn chỉ là tên.

ví dụ:

def test_something(self):
    """Something should happen"""
    ...

Sẽ xuất ra "Điều gì đó sẽ xảy ra" khi chạy thử nghiệm.

Để có thêm điểm: Bạn cũng có thể tạo / xuất vùng phủ mã của mình:

pip install coverage

Thêm phần sau vào NOSE_ARGS của bạn trong settings.py: '--with-coverage', '--cover-html', '--cover-package=.', '--cover-html-dir=reports/cover'

ví dụ:

NOSE_ARGS = ['--with-spec', '--spec-color', 
         '--with-coverage', '--cover-html', 
         '--cover-package=.', '--cover-html-dir=reports/cover']

Sau đó, bạn sẽ nhận được một bản tóm tắt phạm vi mã đẹp khi bạn chạy python manage.py testcũng như một báo cáo html gọn gàng trongreports/cover


Chào bạn @ toast38coza. Nó khá gọn gàng. Tôi mới làm quen với Python và thật tuyệt khi thấy kết quả kiểm tra được định dạng tốt. Tôi đang tìm tài liệu cho NOSE_ARGS, nhưng không có tài liệu nào trong số những gì tôi tìm thấy hiển thị - Với thông số kỹ thuật và tương tự. Bạn có thể chỉ cho tôi điều đó được không? Về cơ bản, tôi đang cố gắng ngăn mũi lặp lại "Tương tự như TransactionTestCase, nhưng sử dụng transaction.atomic()để đạt được sự cô lập thử nghiệm ......... nTestCase có thể cần thiết (ví dụ: thử nghiệm một số hành vi giao dịch)."
Macario Tala

@MacarioTala đối số --with-spec đến từ pinocchioplugin (bạn có thể pip cài đặt). Xem nơi nó nói: "trước tiên hãy cài đặt một số yêu cầu" ở trên.
toast38coza

Đúng vậy. Tôi đã cài đặt nó. Vậy hãy để tôi thử tìm tài liệu về pinocchio. Cảm ơn!
Macario Tala

1
Vì sở thích chia sẻ, tôi đã hoán đổi pinocchio vì nó hơi dài dòng, và thay vì chia nhỏ nó, tôi tìm thấy cái này: gfxmonk.net/dist/0install/rednose.xml , bạn cũng có thể thích nó.
Macario Tala
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.