Estoy ejecutando este comando:
python manage.py test project.apps.app1.testsy causa este error:
AttributeError: el objeto 'módulo' no tiene atributo 'pruebas'
A continuación se muestra la estructura de mi directorio. También agregué app1 a la configuración de mis aplicaciones instaladas.
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'
Estructura de directorios:


python -c "from project.apps.app1.tests import *"__all__variable en cada archivo? ¿Y especificar una lista de nombres de clases, funciones y variables para exportar cuando se usafrom package_name.module import *? He tenido buena suerte con este patrón. Entiendo que se necesita un poco más de tiempo para escribir el__all__bit en la parte superior de cada archivo. Pero la importación con " estrella de la muerte " parece funcionar bien.Utilizar:
./manage.py shellseguido por
import myapp.testspara encontrar la naturaleza del error de importación.
fuente
./manage.py shell, unoimport myapp.testsofrom myapp.tests import *ambos funcionaron sin error. Pero sigo recibiendo el error descrito por el OP.Para mi caso, necesito crear un __init__.py vacío en mi
app/testscarpetafuente
El ejemplo anterior de Steve Bradshaw funciona para errores de importación (gracias Steve).
Otro tipo de errores (por ejemplo, ValueError) también pueden causar
para ver cuáles son estos errores
fuente
Tuve el mismo error que Chris. Había eliminado un modelo antiguo, luego ejecuté tests.py, pero otro archivo (views.py) todavía estaba intentando importar el modelo eliminado.
Cuando saqué la declaración de importación ahora obsoleta, el problema se resolvió.
fuente
Asegúrese de que todos los módulos que está utilizando en su secuencia de comandos no estén dañados. Con esto me refiero a revisar la ortografía en sus declaraciones de importación.
Puede probar sus módulos ejecutando declaraciones de importación en la consola interactiva de djano.
fuente
Resolví el error "AttributeError: el módulo 'utils' no tiene el atributo 'name_of_my_function'" arreglando una referencia de importación circular. Mis archivos manage.py y utils.py tenían cada uno una declaración de importación apuntando entre sí.
fuente
De acuerdo con el documento de django Cuando ejecuta sus pruebas , el comportamiento predeterminado de la utilidad de prueba es encontrar todos los casos de prueba (es decir, subclases de unittest.TestCase ) en cualquier archivo cuyo nombre comience con prueba, automáticamente construya una suite de pruebas a partir de esos casos de prueba y ejecutar esa suite.
así que prueba esto:
python manage.py test tests.pyfuente
Obtuve el mismo error, pero verifiqué todas las razones aquí, no solucionó mi problema.
Finalmente, averigüe que la razón es que el nombre de un método que se importó pero que aún no se usó no es correcto. Aunque es un error estúpido, sucede.
fuente
Yo tenía el mismo error. Resultó ser porque nombré a mi módulo common.py, pero ya había algún otro módulo common.py. Todo lo que tenía que hacer era cambiar el nombre de mi módulo.
fuente
Tuve un error similar al escribir un unittest.TestCase. Cuando volví a escribir la misma definición de método tal como estaba, ¡pareció funcionar!
El único cambio que noté en PyCharm fue el icono emergente 'anular' la segunda vez, ya que el método de configuración (auto) debe anular el método original definido en TestCase.
fuente