Django Tests(TestCase), проблемы с fixtures, c reverse

Рейтинг: 0Ответов: 1Опубликовано: 08.06.2023

В тесты добавляю Fixtures, и при запуске тестов выдает ошибку:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

Пытался кодировать в другие форматы - ничего не меняется.

Вторая проблема: использую reverse, передавая name='url' и kwargs для передачи id, так как url выглядит так:

path('category/<int:category_id>/', category_recipes, name='category_recipes')

Выдает ошибку:

AttributeError: 'NoneType' object has no attribute 'id'

Код теста выглядит так:

class RecipesViewTestCase(TestCase):
    fixtures = ['categories.json', 'recipes.json']

    def setUp(self):
        self.recipes = RecipesModel.objects.all()

    def test_list_with_category(self):
        categories = CategoriesModel.objects.first()
        path = reverse('category', kwargs={'category_id': categories.id})
        response = self.client.get(path)

        self.assertEqual(
            list(response.context_data['category']),
            list(self.recipes.filter(category_id=categories.id))
        )

Ответы

▲ 0

Первая проблема связана с кодировкой данных в файле fixtures. Скорее всего они были сохранены в другой кодировке.

Потом ошибка возникает потому, что в reverse вы указываете name='url', в то время как имя URL-шаблона 'category_recipes'.

path = reverse('category_recipes', kwargs={'category_id': categories.id}) Вроде так, особо не проверял