В Django 1.6 поведение изменилось, поэтому создавать пакет больше нет необходимости. Просто назовите свои файлы test*.py
.
Из документации Django 1.7
Когда вы запускаете свои тесты, тестовая утилита по умолчанию находит все тестовые примеры (то есть подклассы unittest.TestCase) в любом файле, имя которого начинается с test, автоматически создает набор тестов из этих тестовых примеров, и запустите этот пакет.
Из документации Django 1.6 ,
Обнаружение тестов основано на обнаружении тестов, встроенных в модуль unittest. По умолчанию это обнаружит тесты в любом файле с именем «test * .py» в текущем рабочем каталоге.
Предыдущее поведение из документации Django 1.5 :
Когда вы запускаете свои тесты, тестовая утилита по умолчанию находит все тестовые примеры (то есть подклассы unittest.TestCase) в models.py и tests.py, автоматически создает набор тестов из этих тестовых примеров, и запустите этот пакет.
Существует второй способ определить набор тестов для модуля: если вы определите функцию с именем suite () в models.py или tests.py, средство запуска тестов Django будет использовать эту функцию для создания набора тестов для этого модуля. Это соответствует предлагаемой организации для модульных тестов. См. Документацию Python для получения дополнительных сведений о том, как создать сложный набор тестов.
test*.py
файлы в папку, названнуюtests
для сохранения папки в чистоте - это возможно, но вы должны запустить,./manage.py test app.tests
и весь относительный импорт должен подняться на уровень (from .models
становитсяfrom ..models
).Обратите внимание, что этот подход больше не действует в Django 1.6, см. Этот пост .
Вы можете создать
tests
папку___init___.py
внутри (чтобы она стала пакетом). Затем вы добавляете туда свои файлы .py для сплит-теста и импортируете их все в___init___.py
.То есть: замените
test.py
файл модулем, который выглядит и действует как файл:Создайте
tests
каталог под рассматриваемым приложениемИмпортируйте подмодули в
app\tests\__init__.py
:Теперь вы можете использовать ./manage.py, как если бы все они были в одном файле:
источник
python manage.py test myapp
в виду, то на самом деле этот ответ работает нормально. (только что попробовал)Ответ, изложенный Томашем, правильный. Однако может оказаться утомительным убедиться, что импортированные
__init__.py
файлы соответствуют вашей файловой структуре.Чтобы автоматически определять все тесты в папке, вы можете добавить это в
__init__.py
:Это позволит вам запустить,
./manage.py test appname
но не будет выполнять определенные тесты. Для этого вы можете использовать этот код (также в__init__.py
):Теперь вы можете запускать все свои тесты через
manage.py test app
или определенные черезmanage.py test app.TestApples
источник
__init__.py
sys.modules[packagename]
. Быстрый обходной путь -del
любой, который вызывает проблемы после вышеуказанного. (Или вы можете переименовать свои папки;))python manage.py test appName
) второй бит кода вызывал ошибку, указывающую, что__path__
он недоступен. Я избежал этого, заключив второй фрагмент вif '__path__' in locals():
чек, и это помогло. Спасибо за ответ!Просто сделайте вашу структуру каталогов такой:
И
python manage.py test myapp
будет работать как положено.источник
http://docs.python.org/library/unittest.html#organizing-tests рассказывает о разделении файлов на модули, а в разделе прямо над ним есть пример.
источник
Не нужно ничего кодировать в init. Просто создайте подкаталог в своем приложении. Единственное требование - не называть это тестами * Например
источник
В Django 2.2 простым и довольно хорошим решением может быть создание
test
папки внутри приложения, в которую вы можете поместить свои связанныеtest_...py
файлы, просто добавив__init__.py
их вtest
папку.источник
Если у вас более сложная настройка или вы не хотите использовать
from ... import *
операторыsuite
-type , вы можете определить функцию, вызываемую в вашем tests.py (или tests / __ init__.py), которая возвращает экземплярunittest.TestSuite
.источник
Я думаю, что
./manage.py test
просто выполняет все трюки с тестами (в django> = 1.7).Если ваши организации тестов о группировке и Cherrypicking и вы поклонник
nose
использования Джанго носа :Если вы знаете нос, то вы гораздо лучше знаете, как использовать подстановочные знаки для всех ваших файлов.
PS
Это просто лучшая практика. Надеюсь, это поможет. Ответ был позаимствован отсюда: запуск определенного тестового примера в Django, когда в вашем приложении есть каталог тестов.
источник
У меня есть два файла. Одно есть,
tests.py
а другое естьtest_api.py
. Я могу запустить их индивидуально, как показано ниже.Обратитесь к ответу @osa о соглашении об именах файлов.
источник