Size: a a a

Django [ru] #STAY HOME

2020 February 07

MB

Muslim Beibytuly in Django [ru] #STAY HOME
tot samiy neizvestniy
У меня вот ещё какой вопрос. Чтобы протестить различные исключения, нужно сайд эффект юзать?
что за сайд эффект? какую ошибку пытаетесь вызвать?
источник

tn

tot samiy neizvestniy in Django [ru] #STAY HOME
Muslim Beibytuly
что за сайд эффект? какую ошибку пытаетесь вызвать?
Да вообще любую, от встроенных питоновских до каких-то кастомных.

Например, вот есть ошибка у того же страйпа except stripe.error.APIConnectionError
источник

tn

tot samiy neizvestniy in Django [ru] #STAY HOME
Мне лично не удаётся воспроизвести ситуацию для такой ошибки. Но в коде прописано исключение для неё. Думаю, как её тестить.
источник

tn

tot samiy neizvestniy in Django [ru] #STAY HOME
Сайд эффект - это из моков
источник

tn

tot samiy neizvestniy in Django [ru] #STAY HOME
Как я понимаю, он генерит ошибку
источник
2020 February 08

tn

tot samiy neizvestniy in Django [ru] #STAY HOME
Причём эти ошибки находятся где-то посреди функции... То есть, до этого места нужно как-то добраться и уже там кинуть исключение
источник

MB

Muslim Beibytuly in Django [ru] #STAY HOME
tot samiy neizvestniy
Мне лично не удаётся воспроизвести ситуацию для такой ошибки. Но в коде прописано исключение для неё. Думаю, как её тестить.
надо воспроизвести кейс, при котором вылетает эта ошибка. В responses есть возможность вписать какой именно http-код вы можете вернуть из мока. Попробуйте создать ответ от responses mock запроса с кодом 502/503 или вообще вернуть timeouterror(в документации есть такие кейсы) и проверить выкинет ли stripe ошибки и как их обработать. В целом в python не принято так заморачиваться насчет defensive programming, это больше к golang с его ручной обработкой каждой ошибки. Ловите что очевидно, для остального используйте sentry и исправляйте по мере появления нестандартных ситуаций, добавляя тесты уже для воспроизведения этих кейсов
источник

BE

Black Eyes in Django [ru] #STAY HOME
Pavel Zagrebelin
исключать инстанс из кверисета валидации
что-то не понял =)
источник

PZ

Pavel Zagrebelin in Django [ru] #STAY HOME
Black Eyes
что-то не понял =)
валидатор покажи
источник

BE

Black Eyes in Django [ru] #STAY HOME
Pavel Zagrebelin
валидатор покажи
форму имеешь ввиду? или что
источник

tn

tot samiy neizvestniy in Django [ru] #STAY HOME
Muslim Beibytuly
надо воспроизвести кейс, при котором вылетает эта ошибка. В responses есть возможность вписать какой именно http-код вы можете вернуть из мока. Попробуйте создать ответ от responses mock запроса с кодом 502/503 или вообще вернуть timeouterror(в документации есть такие кейсы) и проверить выкинет ли stripe ошибки и как их обработать. В целом в python не принято так заморачиваться насчет defensive programming, это больше к golang с его ручной обработкой каждой ошибки. Ловите что очевидно, для остального используйте sentry и исправляйте по мере появления нестандартных ситуаций, добавляя тесты уже для воспроизведения этих кейсов
Тоже так думаю. По-моему там уже есть проверки этих ошибок, так что добраться до места этих исключений невозможно. Просто тот, кто писал код, он все-равно вставил все эти эксепшены
источник

MB

Muslim Beibytuly in Django [ru] #STAY HOME
tot samiy neizvestniy
Тоже так думаю. По-моему там уже есть проверки этих ошибок, так что добраться до места этих исключений невозможно. Просто тот, кто писал код, он все-равно вставил все эти эксепшены
источник

PZ

Pavel Zagrebelin in Django [ru] #STAY HOME
Black Eyes
форму имеешь ввиду? или что
ты сейчас как-то слуг проверяешь, или пока просто думаешь, как это делать?
источник

BE

Black Eyes in Django [ru] #STAY HOME
Pavel Zagrebelin
валидатор покажи
Я не писал валидатор, просто форма ModelForm
источник

BE

Black Eyes in Django [ru] #STAY HOME
Pavel Zagrebelin
ты сейчас как-то слуг проверяешь, или пока просто думаешь, как это делать?
Вот так
   class Meta:
       model = User
       fields = ['slug', 'last_name', 'first_name', 'avatar']

а в моделе
slug = models.SlugField(verbose_name='ярлык', max_length=30, blank=True, unique=True,

Я инстанс в форму передаю,  в шаблон

И если вернется обратно такой же slug то fail validate
источник

tn

tot samiy neizvestniy in Django [ru] #STAY HOME
Black Eyes
Вот так
   class Meta:
       model = User
       fields = ['slug', 'last_name', 'first_name', 'avatar']

а в моделе
slug = models.SlugField(verbose_name='ярлык', max_length=30, blank=True, unique=True,

Я инстанс в форму передаю,  в шаблон

И если вернется обратно такой же slug то fail validate
Напиши свою валидацию для формы
источник

BE

Black Eyes in Django [ru] #STAY HOME
Pavel Zagrebelin
ты сейчас как-то слуг проверяешь, или пока просто думаешь, как это делать?
Сейчас попробую
источник

PZ

Pavel Zagrebelin in Django [ru] #STAY HOME
Black Eyes
Вот так
   class Meta:
       model = User
       fields = ['slug', 'last_name', 'first_name', 'avatar']

а в моделе
slug = models.SlugField(verbose_name='ярлык', max_length=30, blank=True, unique=True,

Я инстанс в форму передаю,  в шаблон

И если вернется обратно такой же slug то fail validate
и что-то не работает?
источник

BE

Black Eyes in Django [ru] #STAY HOME
Pavel Zagrebelin
и что-то не работает?
Ну да, пользователь если поменяет имя, а остальные поля нет, следовательно возвращается обратно такой же slug И валидация из-за Unique не проходит
Нужно советуют выше валидацию написать для slug
источник

PZ

Pavel Zagrebelin in Django [ru] #STAY HOME
я так спрашиваю, потому что джанга умеет обрабатывать ситуацию "правим существующий объект, будь аккуратнее при проверке уникальности "
источник