В вашем примере, если вы запустите manage.py test app.TestBananas
, вы можете запустить этот конкретный тест.
Вы можете заставить все работать, убедившись, что все ваши тесты импортированы в __init__.py
, но когда у вас много тестов, это становится сложным для управления. Если вы хотите запустить тесты в PyCharm, тогда django-nose не вариант.
Чтобы сделать это проще, мы можем сделать так, чтобы набор тестов автоматически находил все тесты в пакете тестов. Просто введите это в __init__.py
(Обязательно замените «appname»):
def suite():
return unittest.TestLoader().discover("appname.tests", pattern="*.py")
Это по-прежнему не позволяет нам запускать определенные тесты. Для этого вам нужно добавить этот код вверху __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__)
Теперь вы можете запускать все свои тесты через manage.py test app
или через определенные тесты через manage.py test app.TestApples