Как unittest тестировать Django ModelForms с помощью kwargs
Я пытаюсь написать модульные тесты для Django ModelForm. Метод init
этой формы был переопределен так, чтобы получить доступ к текущему пользователю в переменной kwargs.
Однако, когда бы я ни запускал тест, он всегда выдает ошибку
form = UserCreationForm(data={'email': 'test@email.com',
File "C:\Users\CODING\django\project1\bookapp\forms.py", line 45, in __init__
self.current_user = kwargs.pop('current_user')
KeyError: 'current_user'
views.py
@method_decorator([login_required], name='dispatch') # Only logged in users can access the page
class BookCreateView(CreateView):
template_name = "new_book.html"
model = Book
def get_form_kwargs(self):
kwargs = super(BookCreateView, self).get_form_kwargs()
kwargs['current_user'] = self.request.user
return kwargs
forms.py
class BookCreationForm(forms.ModelForm):
class Meta:
model = Book
fields = ('title', 'isbn', 'author')
def __init__(self, *args, **kwargs):
self.current_user = kwargs.pop('current_user') # Line 45
super().__init__(*args, **kwargs)
# Some removed code
тесты
def test_save(self):
new_user = get_user_model().objects.create_user(
email='test1@email.com',
password='secret',
first_name='John',
last_name='Doe',
)
user = get_user_model().objects.get(id=1)
# This tests the save method
form = BookCreationForm(data={'email': 'test@email.com',
'first_name': 'John',
'last_name': 'Doe',
'current_user': user,
})
book = form.save()
Всякий раз, когда я запускаю тест, он терпит неудачу из-за этого KeyError