#pytest #pytest-django
#pytest #pytest-django
Вопрос:
У меня есть clean_email
метод, в котором я изменяю ввод поля электронной почты на нижний регистр, чтобы избежать проблем с дублированием с учетом регистра.
Что у меня есть
форма
class UserAdminCreationForm(forms.ModelForm):
class Meta:
model = User
fields = ("username", "email", "names", "last_names", "identification_number")
def clean_email(self) -> str:
"""Convert all username to lowercase to avoid duplicity problems with case-sensitive."""
email = self.cleaned_data["email"]
return email.lower()
Тест
class TestUserCreationForm:
def test_clean_email(self):
proto_user = UserFactory.build() # User created with factory boy.
form = UserAdminCreationForm(
{
"username": proto_user.username,
"email": proto_user.email,
"names": proto_user.names,
"last_names": proto_user.last_names,
"identification_number": proto_user.identification_number,
}
)
assert form.is_valid()
assert form.clean_email() == form.cleaned_data["email"].lower()
Проблема
Несмотря на то, что тест пройден, когда я генерирую отчет о покрытии, инструкция, return email.lower()
полученная из clean_email
метода, отображается как непроверенная.
Комментарии:
1. Вы проверили, что код достигнут (с помощью отладчика или печати)? Для меня это выглядит как проблема покрытия, а не проблема с кодом.
2. @MrBeanBremen Я не знаю, что произошло, но иногда отчет о покрытии изменяет процент покрытия и иногда показывает некоторые строки как непроверенные, а другие — как 97 или 100% покрытие… Я ничего не меняю в своих тестах.
3. Это звучит довольно странно. Из вашего кода ясно, что рассматриваемая строка должна быть покрыта, но я не понимаю разных результатов покрытия после выполнения одного и того же теста — насколько я вижу, в вашем коде нет ничего случайного…
4. @MrBeanBremen Я не знаю, что случилось, я меняю свои тесты, после этого я создаю свой отчет о покрытии и не сразу принимает изменения, я запускаю его пару раз и ничего, я случайно закрыл IDE (pycharm) или запустил тест 4 или 5 раз, а затем принял изменения. Это действительно расстраивает, потому что я использую этот отчет, чтобы визуализировать, какие части моего кода отсутствуют для тестирования.