Odpowiedź podana przez Tomasza jest prawidłowa. Jednak upewnienie się, że importowane __init__.py
pliki są zgodne ze strukturą plików , może być uciążliwe .
Aby automatycznie wykryć wszystkie testy w folderze , możesz dodać to w __init__.py
:
import unittest
def suite():
return unittest.TestLoader().discover("appname.tests", pattern="*.py")
Umożliwi to uruchomienie, ./manage.py test appname
ale nie będzie obsługiwać wykonywania określonych testów. Aby to zrobić, możesz użyć tego kodu (również w __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__)
Teraz możesz uruchomić wszystkie swoje testy za pośrednictwem manage.py test app
lub konkretne testy za pośrednictwemmanage.py test app.TestApples
test*.py
pliki w folderze o nazwie,tests
aby utrzymać folder w czystości - jest to możliwe, ale musisz uruchomić./manage.py test app.tests
i wszystkie względne importy muszą wzrosnąć o jeden poziom (from .models
staje sięfrom ..models
).