Django - Query_set возвращает пустой список массивов при запуске в тесте

Я пытаюсь запустить TestCase на моей модели.

У меня уже есть база данных MySQL (конкретно MariaDB через HeidiSQL GUI), созданная и подключенная с соответствующими данными внутри для этого проекта.

Мой код test.py выглядит следующим образом:

class TestArrivalProbabilities(TestCase):
    def test_get_queryset_test(self):
        print("Hello Steve!")
        i = 1
        self.assertEqual(i, 1)
        l = [3, 4]
        self.assertIn(4, l)

    def test_get_queryset_again(self):
        query_set = ArrivalProbabilities.objects.all()
        print(query_set)
        n = len(query_set)
        print(n)  # Print each row
        bin_entries = []
        bin_edges = []
        for i in range(n):
            print(query_set[i])
            if query_set[i].binEntry is not None:
                bin_entries.append(query_set[i].binEntry)
            bin_edges.append(query_set[i].binEdge)
        print(bin_entries, bin_edges)

        hist = (numpy.array(bin_entries), numpy.array(bin_edges))

Однако, вывод в терминале следующий:

(venv) C:\Users\Steve\uni-final-project>python manage.py test     
Creating test database for alias 'default'...
System check identified no issues (0 silenced).
<QuerySet []>
0
[] []
.Hello Steve!
.
----------------------------------------------------------------------
Ran 2 tests in 0.016s

OK
Destroying test database for alias 'default'...

Я пытался выяснить, почему база данных MySQL, которую я создал, не используется. Я читал, что Django создает тестовую "фиктивную базу данных" для использования в тесте, а затем сносит ее, но может быть я упускаю что-то действительно очевидное?

Я не думаю, что это проблема с подключением, так как у меня установлен mysqlclient. И я пытался использовать https://docs.djangoproject.com/en/3.2/topics/db/queries/#creating-objects, но все равно получаю тот же результат.

Я прочитал документацию, но мне трудно разобраться с некоторыми аспектами, поскольку я новичок в разработке программного обеспечения, и этот курс довольно крутой кривой обучения.

Я проверил, не задавался ли этот вопрос ранее, но не нашел на него ответов. Заранее прошу прощения, если где-то уже был дан ответ.

Любая помощь в правильном направлении или решение будет очень признательна.

Спасибо.

В первую очередь вы должны прочитать что-то связанное с тестированием, а не с созданием объектов в django. Когда вы хотите протестировать свой код, обычно есть несколько подходов, связанных с базой данных. В официальной документации django показано, как работать с экземплярами базы данных. Просто когда вы запускаете тест, он создает тестовую базу данных и запускает ваши тестовые примеры. Для этого вы можете использовать функцию setUp. добавьте это и попробуйте еще раз, пожалуйста:

class TestArrivalProbabilities(TestCase):
    def setUp(self):
        ....
        ArrivalProbabilities.objects.create(...)
        ArrivalProbabilities.objects.create(...)
        ....

После этой части вы больше не увидите пустых наборов кверисетов. Вы также можете использовать fixtures

Вернуться на верх