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