Не удается загрузить объекты в тестовом классе Django - PullRequest
1 голос
/ 11 апреля 2019

В тестовом классе я хочу получить все объекты заданного типа;это всегда дает пустой набор:

from Dictionnaire.models import Entree

class Test(TestCase):
    def setUp(self):
    ...
    Q=Entree.objects.all()
    print(Q.count())  <------always get 0.

Почему?

Ответы [ 2 ]

1 голос
/ 11 апреля 2019

Идея запуска тестов состоит в том, чтобы при каждом запуске теста воспроизводилась ситуация.Таким образом, TestCase будет создавать новую пустую базу данных при каждой инициализации, выполняя сначала все ваши миграции.Таким образом, вы можете быть уверены, что каждый раз, когда вы запускаете свои тесты, у вас возникает одна и та же ситуация.

Поэтому TestCase не использует вашу базу данных разработки и не использует ваш сервер разработки (runserver),Он работает полностью в своем собственном «мире».

Если вы хотите убедиться, что у вас есть какие-то данные в вашей базе данных при выполнении теста, переопределите метод класса setUpTestData(), что быстрее, чем делать это для каждого теста в setUp().

0 голосов
/ 12 апреля 2019

Вы можете вывести свою базу данных в прибор и затем загрузить ее из тестовой базы данных:

. Прибор - это набор данных, которые Django знает, как импортировать в базу данных.Самый простой способ создания осветителя, если у вас уже есть данные, - использовать команду manage.py dumpdata

. Закрепления могут быть записаны в виде документов JSON, XML или YAML (с установленным PyYAML).

Загрузка данных проста: просто позвоните manage.py loaddata <fixturename>, где находится имя файла фикстуры, который вы создали

А затем из SetUp() в test.py:

from django.core.management import call_command
call_command("loaddata", "' + 'fixturefile.json' + '",
verbosity=0)

Однако, чтобы поддерживать тестовую базу данных в актуальном состоянии с производственной базой данных (что я бы не рекомендовал), вам нужно настроить задачу cron или что-то в этом роде.

Источники:

https://stackoverflow.com/a/48737566/5094841

https://django -testing-docs.readthedocs.io / en / latest / fixtures.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...