Saya menjalankan perintah ini:
python manage.py test project.apps.app1.tests
dan itu menyebabkan kesalahan ini:
AttributeError: objek 'module' tidak memiliki atribut 'tes'
Di bawah ini adalah struktur direktori saya. Saya juga menambahkan app1 ke konfigurasi aplikasi yang saya instal.
Traceback (most recent call last):
File "manage.py", line 10, in <module> execute_from_command_line(sys.argv)
File "/home/username/local/dev/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line
utility.execute()
File "/home/username/local/dev/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 377, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/username/local/dev/local/lib/python2.7/site-packages/django/core/management/commands/test.py", line 50, in run_from_argv
super(Command, self).run_from_argv(argv)
File "/home/username/local/dev/local/lib/python2.7/site-packages/django/core/management/base.py", line 288, in run_from_argv
self.execute(*args, **options.__dict__)
File "/home/username/local/dev/local/lib/python2.7/site-packages/django/core/management/commands/test.py", line 71, in execute
super(Command, self).execute(*args, **options)
File "/home/username/local/dev/local/lib/python2.7/site-packages/django/core/management/base.py", line 338, in execute
output = self.handle(*args, **options)
File "/home/username/local/dev/local/lib/python2.7/site-packages/django/core/management/commands/test.py", line 88, in handle
failures = test_runner.run_tests(test_labels)
File "/home/username/local/dev/local/lib/python2.7/site-packages/django/test/runner.py", line 146, in run_tests
suite = self.build_suite(test_labels, extra_tests)
File "/home/username/local/dev/local/lib/python2.7/site-packages/django/test/runner.py", line 66, in build_suite
tests = self.test_loader.loadTestsFromName(label)
File "/usr/lib/python2.7/unittest/loader.py", line 100, in loadTestsFromName
parent, obj = obj, getattr(obj, part)
AttributeError: 'module' object has no attribute 'tests'
Struktur direktori:
python -c "from project.apps.app1.tests import *"
__all__
variabel di setiap file? Dan tentukan daftar nama kelas, fungsi, dan variabel yang akan diekspor saat menggunakanfrom package_name.module import *
? Saya beruntung dengan pola ini. Saya mengerti bahwa perlu lebih banyak waktu untuk menulis__all__
sedikit di bagian atas setiap file. Tapi mengimpor menggunakan " bintang kematian " tampaknya bekerja dengan baik.Menggunakan:
./manage.py shell
diikuti oleh
import myapp.tests
untuk menemukan sifat kesalahan impor.
sumber
./manage.py shell
maka salah satuimport myapp.tests
ataufrom myapp.tests import *
keduanya bekerja tanpa kesalahan. Tapi, saya masih mendapatkan kesalahan yang dijelaskan oleh OP.Untuk kasus saya, saya perlu membuat __init__.py kosong di
app/tests
folder sayasumber
Contoh Steve Bradshaw di atas berfungsi untuk kesalahan impor (terima kasih Steve).
Jenis kesalahan lainnya (misalnya ValueError) juga dapat menyebabkan
untuk melihat apa kesalahan ini
sumber
Saya mengalami kesalahan yang sama dengan Chris. Saya telah menghapus model lama, lalu menjalankan tests.py, tetapi file lain (views.py) masih mencoba mengimpor model yang dihapus.
Ketika saya mengeluarkan pernyataan impor yang sekarang sudah usang, masalah terselesaikan.
sumber
Pastikan bahwa semua modul yang Anda gunakan di skrip Anda tidak rusak. Maksud saya, periksa ejaan dalam pernyataan impor Anda.
Anda dapat menguji modul Anda dengan menjalankan pernyataan import di konsol interaktif djano.
sumber
Saya mengatasi kesalahan "AttributeError: modul 'utils' tidak memiliki atribut 'name_of_my_function'" dengan memperbaiki referensi impor melingkar. File saya manage.py dan utils.py masing-masing memiliki pernyataan import yang menunjuk satu sama lain.
sumber
Menurut dokumen django Ketika Anda menjalankan pengujian Anda , perilaku default dari utilitas pengujian adalah menemukan semua kasus pengujian (yaitu, subkelas dari unittest.TestCase ) dalam file apa pun yang namanya dimulai dengan pengujian, secara otomatis membangun rangkaian pengujian dari kasus uji tersebut, dan jalankan suite tersebut.
jadi coba ini:
python manage.py test tests.py
sumber
Mendapat kesalahan yang sama, tetapi memeriksa semua daftar alasan di sini, tidak memperbaiki masalah saya.
Akhirnya ketahuilah bahwa, alasannya adalah nama salah satu metode yang diimpor tetapi belum digunakan tidak benar. Meskipun itu adalah kesalahan bodoh, itu terjadi.
sumber
Saya mengalami kesalahan yang sama. Ternyata itu karena saya menamai modul saya common.py, namun sudah ada beberapa modul common.py lainnya. Yang harus saya lakukan adalah mengganti nama modul saya.
sumber
Saya mengalami kesalahan serupa saat menulis unittest.TestCase. Ketika saya mengetik ulang definisi metode yang sama sebagaimana adanya, sepertinya berhasil!
Satu-satunya perubahan yang saya perhatikan di PyCharm adalah pop-up ikon 'timpa' untuk kedua kalinya, karena metode penyiapan (sendiri) perlu mengganti metode asli yang ditentukan dalam TestCase.
sumber