La réponse, comme indiqué par Tomasz est correct. Cependant, cela peut devenir fastidieux pour s'assurer que les importations en __init__.py
correspondent à la structure de votre fichier.
Pour détecter automatiquement tous les tests dans le dossier , vous pouvez ajouter ce dans __init__.py
:
import unittest
def suite():
return unittest.TestLoader().discover("appname.tests", pattern="*.py")
Cela vous permettra d'exécuter ./manage.py test appname
, mais ne gère pas l'exécution de tests spécifiques. Pour ce faire vous pouvez utiliser ce code (également en __init__.py
):
import pkgutil
import unittest
for loader, module_name, is_pkg in pkgutil.walk_packages(__path__):
module = loader.find_module(module_name).load_module(module_name)
for name in dir(module):
obj = getattr(module, name)
if isinstance(obj, type) and issubclass(obj, unittest.case.TestCase):
exec ('%s = obj' % obj.__name__)
Maintenant, vous pouvez exécuter vos tests via manage.py test app
ou plus spécifiques via manage.py test app.TestApples