Django Tests(TestCase), проблемы с fixtures, c reverse
В тесты добавляю 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))
)
Ответы (1 шт):
Автор решения: Тв0р0бушек
→ Ссылка
Первая проблема связана с кодировкой данных в файле fixtures. Скорее всего они были сохранены в другой кодировке.
Потом ошибка возникает потому, что в reverse вы указываете name='url', в то время как имя URL-шаблона 'category_recipes'.
path = reverse('category_recipes', kwargs={'category_id': categories.id})
Вроде так, особо не проверял