Как протестировать форму обновления в django
У меня возникла проблема в моем проекте django. У меня есть пользовательская модель пользователя, и я создал форму обновления и форму регистрации с классом ModelForm для модели пользователя. Я написал модульный тест с классом TestCase для тестирования формы, но получаю сообщение об ошибке __init__() got an unexpected keyword argument 'instance'. Я не смог найти никакого решения для этой проблемы. Может ли кто-нибудь помочь мне решить эту проблему?
Форма:
class UserUpdateForm(forms.ModelForm):
class Meta:
model = User
fields = ('email', 'username', 'first_name', 'last_name')
username = forms.CharField(
widget=forms.TextInput(
attrs={
}
)
)
email = forms.EmailField(
widget=forms.EmailInput(
attrs={
}
)
)
first_name = forms.CharField(
widget=forms.TextInput(
attrs={
}
)
)
last_name = forms.CharField(
widget=forms.TextInput(
attrs={
}
)
)
def clean_username(self):
username = self.cleaned_data.get('username').lower()
try:
user = User.objects.exclude(pk=self.instance.pk).get(username=username)
except User.DoesNotExist:
return username
else:
raise forms.ValidationError(f"Sorry but {username} was taken already")
def clean_email(self):
email = self.cleaned_data.get('email').lower()
try:
user = User.objects.exclude()
except User.DoesNotExist:
return email
else:
raise forms.ValidationError(f"Sorry but {email} was taken already")
def clean_first_name(self):
first_name = self.cleaned_data.get('first_name')
first_name = normalize_name(first_name)
return first_name
def clean_last_name(self):
last_name = self.cleaned_data.get('last_name')
last_name = normalize_name(last_name)
return last_name
Мой модульный тест:
def updateUser(self):
user = UserRegisterForm(data)
if user.is_valid():
user = user.save()
print(user.username)
username = 'user1'
email = 'user1@gmail.com'
first_name = 'user'
last_name = 'user'
date_of_birth = '2003-2-16'
password1 = 'userpassword'
password2 = 'userpassword'
data = {
'username': username,
'email': email,
'first_name': first_name,
'last_name': last_name,
'date_of_birth': date_of_birth,
'password1': password1,
'password2': password2,
}
user = UserRegisterForm(data)
if user.is_valid():
user = user.save()
print(user.username)
user = User.objects.get(email='user1@gmail.com')
print(user)
data = {
'username': 'user2',
}
form = UserUpdateForm(instance=user)
print(form)