Dokumentasi Django ( http://docs.djangoproject.com/en/1.3/topics/testing/#running-tests ) mengatakan bahwa Anda dapat menjalankan masing-masing kotak uji dengan menetapkannya:
$ ./manage.py test animals.AnimalTestCase
Ini mengasumsikan bahwa Anda memiliki tes Anda dalam file tests.py di aplikasi Django Anda. Jika ini benar, maka perintah ini berfungsi seperti yang diharapkan.
Saya memiliki tes untuk aplikasi Django di direktori tes:
my_project/apps/my_app/
├── __init__.py
├── tests
│ ├── __init__.py
│ ├── field_tests.py
│ ├── storage_tests.py
├── urls.py
├── utils.py
└── views.py
The tests/__init__.py
file memiliki suite () fungsi:
import unittest
from my_project.apps.my_app.tests import field_tests, storage_tests
def suite():
tests_loader = unittest.TestLoader().loadTestsFromModule
test_suites = []
test_suites.append(tests_loader(field_tests))
test_suites.append(tests_loader(storage_tests))
return unittest.TestSuite(test_suites)
Untuk menjalankan tes yang saya lakukan:
$ ./manage.py test my_app
Mencoba menentukan kasus uji individual menimbulkan pengecualian:
$ ./manage.py test my_app.tests.storage_tests.StorageTestCase
...
ValueError: Test label 'my_app.tests.storage_tests.StorageTestCase' should be of the form app.TestCase or app.TestCase.test_method
Saya mencoba melakukan apa yang dikatakan pesan pengecualian:
$ ./manage.py test my_app.StorageTestCase
...
ValueError: Test label 'my_app.StorageTestCase' does not refer to a test
Bagaimana cara menentukan kasus uji individual ketika tes saya di beberapa file?
sumber
another.test:TestCase
Karena Django 1.6 Anda dapat menjalankan test case lengkap, atau single test, menggunakan notasi titik lengkap untuk elemen yang ingin Anda jalankan.
Penemuan tes otomatis sekarang akan menemukan tes dalam file apa pun yang dimulai dengan tes di bawah direktori kerja, jadi menjawab pertanyaan Anda harus mengganti nama file Anda, tetapi sekarang Anda dapat menyimpannya di dalam direktori yang Anda inginkan. Jika Anda ingin menggunakan nama file khusus, Anda dapat menentukan pola (default Django test runner) dengan flag opsi
--pattern="my_pattern_*.py"
.Jadi jika Anda berada di
manage.py
direktori Anda dan ingin menjalankan testest_a
di dalamTestCase
subkelasA
di dalam file ditests.py
bawah aplikasi / modulexample
yang akan Anda lakukan:Jika Anda tidak ingin menyertakan dependensi dan berada di Django 1.6 atau yang lebih baru, itulah cara Anda melakukannya.
Lihat dokumentasi Django untuk informasi lebih lanjut
sumber
error: option --pattern not recognized
daninvalid command name
Saya sendiri mengalami masalah ini dan menemukan pertanyaan ini, kalau-kalau ada yang datang, inilah yang saya gali. DjangoTestSuiteRuner menggunakan metode yang disebut build_test (label) yang mencari tahu kasus uji apa yang harus dijalankan berdasarkan label. Melihat ke metode ini ternyata mereka melakukan getattr () pada modul "model" atau "test". Ini berarti jika Anda mengembalikan suite pelari tes tidak mencari kasus pengujian Anda di suite itu, itu hanya terlihat di salah satu modul tersebut.
Solusi cepat adalah menggunakan
__init__.py
untuk mengimpor tes Anda secara langsung alih-alih mendefinisikan suite. Jadikan mereka bagian dari modul "test" dan build_test (label) dapat menemukannya.Untuk contoh Anda di atas,
tests/__init__.py
cukup berisi:Ini tidak terlalu elegan dan tentu saja jika Anda mencoba melakukan sesuatu yang lebih rumit dengan suite Anda maka ini tidak akan berhasil, tetapi itu akan berlaku untuk kasus ini.
sumber
Ini harus bekerja-
sumber
Saya juga mengalami masalah ini dan alih-alih menggunakan django-nose saya mengikuti tautan ini di sini: http://www.pioverpi.net/2010/03/10/organizing-django-tests-into-folders/ . Anda harus membuka init .py dan mengimpor tes Anda.
Mis dalam init .py:
from unique_test_file import *
sumber
Letakkan kode ini di __init__.py Anda dan itu akan mengimpor semua kelas uji dalam paket dan sub-paket. Ini akan memungkinkan Anda untuk menjalankan tes tertentu tanpa mengimpor setiap file secara manual.
Demikian pula, untuk suite pengujian Anda, Anda dapat menggunakan:
Sekarang yang harus Anda lakukan untuk tes baru adalah menulisnya dan pastikan semuanya ada di folder tes. Tidak ada lagi perawatan impor yang membosankan!
sumber