[Django]-AttributeError: 'module' object has no attribute 'tests'

196๐Ÿ‘

โœ…

I finally figured it out working on another problem. The problem was that my test couldnโ€™t find an import.

It looks like you get the above error if your test fails to import. This makes sense because the test suite canโ€™t import a broken test. At least I think this is what is going on because I fixed the import within my test file and sure enough it started working.

To validate your test case just try import the test case file in python console.

Example:

from project.apps.app1.tests import *
๐Ÿ‘คChris

39๐Ÿ‘

Use:

./manage.py shell

followed by

import myapp.tests

to find the nature of the import error.

๐Ÿ‘คSteve Bradshaw

23๐Ÿ‘

For my case, I need to create an empty __init__.py in my app/tests folder

๐Ÿ‘คtmin

6๐Ÿ‘

Steve Bradshawโ€™s example above works for import errors (thanks Steve).

Other type of errors (e.g. ValueError) may also cause

AttributeError: 'module' object has no attribute 'tests'

to see what these errors are

./manage.py shell
from myapp.tests import SomeTestCase
t = SomeTestCase()
๐Ÿ‘คlukeaus

5๐Ÿ‘

I had the same error as Chris. I had deleted an old model, then run tests.py, but another file (views.py) was still trying to import the deleted model.

When I took out the now-obsolete import statement, problem solved.

๐Ÿ‘คDoug Murphy

3๐Ÿ‘

Make sure that all modules that you are using in your script are not broken. By this I mean check spelling in your import statements.

# invalid import
from app.model.notification import Notification
# valid import
from app.models.notification import Notification

You can test yours modules by executing imports statements in djanoโ€™s interactive console.

$root@13faefes8: python manage.py shell
Type "help", "copyright", "credits" or "license" for more information (InteractiveConsole)
>>> from app.model.notification import Notification
Traceback (most recent call last): 
   File "<console>", line 1, in <module>
ImportError: No module named model.notification
๐Ÿ‘คLukasz Dynowski

2๐Ÿ‘

I resolved the error โ€œAttributeError: module โ€˜utilsโ€™ has no attribute โ€˜name_of_my_functionโ€™ โ€ by fixing a circular import reference. My files manage.py and utils.py each had an import statement pointing at each other.

๐Ÿ‘คrudyt

2๐Ÿ‘

I had the same error. It turned out to be because I named my module common.py, yet there already was some other common.py module. All I had to do was to rename my module.

๐Ÿ‘คDavide Andrea

1๐Ÿ‘

According to django document When you run your tests, the default behavior of the test utility is to find all the test cases (that is, subclasses of unittest.TestCase) in any file whose name begins with test, automatically build a test suite out of those test cases, and run that suite.

so try this : python manage.py test tests.py

๐Ÿ‘คMazdak

1๐Ÿ‘

Got the same error, but checked all the reasons list here, did not fix my problem.

Finally figure it out that, the reason is that the name of one method that imported but not used yet is not correct. Though it is a stupid error, it happens.

๐Ÿ‘คzhihong

0๐Ÿ‘

I had a similar error while writing a unittest.TestCase.
When I re-typed the same method definition as-is, it seemed to work !

The only change I noticed on PyCharm was the โ€˜overrideโ€™ icon pop-up the 2nd time, as the setup(self) method needs to override the original method defined in TestCase.

enter image description here

๐Ÿ‘คdpsahoo

0๐Ÿ‘

My solution was just renaming my module.

๐Ÿ‘คbobdilan

Leave a comment