@python_beginnersЭта группа больше не существует

Страница 919 из 1885
arisu
13.12.2016
21:07:52
откуда я знаю, что ты заполняешь там вообще

Johnnie
13.12.2016
21:07:57
если в шаблон, то я вот так вывожу {{ wtf.quick_form(form) }}

Igor
13.12.2016
21:08:39
вот почему люди считают, что забивать форму вручную проще, чем сделать form = Form(data=request.POST); if form.is_valid(): ok; else: error
так во фласке тож так и делается (с flask-wtf уж точно). а пример выше - это ваще тесты

arisu
13.12.2016
21:09:04
а зачем сабмит?

Google
Igor
13.12.2016
21:09:23
ну ваще да. чтоб проверить форму на валидацию. но для этого и valid() должно быть достаточно какого-нибудь

arisu
13.12.2016
21:09:57
в джанго примерно так было бы: def test_form(): form = UserForm(dict(user='test', password='')) assert not form.is_valid()

с использовпнием пайтеста

Johnnie
13.12.2016
21:10:26
def test_validate_email_already_registered(self, user): """Enter email that is already registered.""" form = RegisterForm(username='unique', email=user.email, password='example', confirm='example') assert form.validate() is False assert 'Email already registered' in form.email.errors

вот другой пример

arisu
13.12.2016
21:10:32
самбит это что-то из разряда реквестов, но не форм

Johnnie
13.12.2016
21:10:35
assert form.validate() is False

пжлста

arisu
13.12.2016
21:10:47
во

уже лучше

стоило махнуть джангой, так во фласке все нужное нашлось)

Johnnie
13.12.2016
21:11:46
предыдущий пример видимо для формы у которой нет правильных валидаторов и данные проверяются где-нибудь во вьюхе

это не очень

Google
Johnnie
13.12.2016
21:21:48
теперь непонятно как дебажить в пичарме это(

(venv)ape364@pbnb ~/P/incjournal> python -m unittest discov

из консоли все ок

Johnnie
14.12.2016
05:02:03
можно выбрать как-нибудь объект в списке, который является экземпляром определенного класса? что-то типа lst.index('some string'), но для классов?

кроме цикла и isinstance() :)

Igor
14.12.2016
05:03:16
filter и isinstance! %)

но вообще твой вопрос звучит прям как queryset (или че там в алхимии) и объекты моделей

Johnnie
14.12.2016
05:07:37
не, я тут другое задумал

хочу в тестах форм дернуть все min & max длины для полей

и генерить строки заведомо меньше и больше

чтобы не менять в 2х местах

Pavel
14.12.2016
05:08:54
и зачем тебе проверку типа? заверни в try/except AttributeError и живи счастливо.

Johnnie
14.12.2016
05:10:46
что именно завернуть?

Pavel
14.12.2016
05:11:08
дёргание все min & max длины для полей

лучше сделать и извиниться, чем просить разрешения. ?

Johnnie
14.12.2016
05:14:39
username_validators = RegisterForm().username.validators for validator in username_validators: try: username_min_length = validator.min except AttributeError: pass

как-то так?

Dmitriy
14.12.2016
05:21:17
Только не pass

Johnnie
14.12.2016
05:21:47
как не пасс? если это не Length, то зачем оно мне?

Google
Dmitriy
14.12.2016
05:22:40
Хотя да, тут больше, в принципе ничего не должно отвалиться

Johnnie
14.12.2016
05:23:05
вообще не сильно понимаю чем это лучше isinstance()

Dmitriy
14.12.2016
05:24:42
А причем тут оно вообще? Тут больше hasattr или getattr пойдет

terry
14.12.2016
05:35:07
боюсь спросить, в начале страницы тег <html> хотя бы стоял?

Erdni
14.12.2016
05:40:26
except pass'ом закрывать это нормальная же практика, да?

Pavel
14.12.2016
05:44:03
Johnnie
14.12.2016
05:46:15
https://paste.fedoraproject.org/506042/94370148/

вот так получилось

вы так долго пишете, что я аж нервничаю

Pavel
14.12.2016
05:53:11
вот так получилось
если стоит задача проверить форму, а не валидаторы по-отдельности, то я бы сделал по-простому три теста: - username отсутствует (если через request) или None (если напрямую в форму) - username = '' - username = 'x'*1000 - username = 'fooo ' # с пробелом в конце, заранее создать пользователя с именем fooo - что-то ещё.

Pavel
14.12.2016
05:53:43
ну и есть славная традиция, один тест - одна проверка

Johnnie
14.12.2016
05:55:02
то есть привязываться к минимальной и максимальной длине - хуевая идея?

Dmitriy
14.12.2016
05:55:33
Смотря какой тип теста

Pavel
14.12.2016
05:56:28
а, это register form. Мне чё-то проглючилось, что речь идёт об login form.

Johnnie
14.12.2016
05:56:32
хм, то есть не даст зарегить, вру)

Dmitriy
14.12.2016
05:56:40
Если тест негативный, то там все варианты, которые не подходят

Johnnie
14.12.2016
05:56:48
validate() все равно вернет False

Google
Dmitriy
14.12.2016
05:57:14
Но тест должен быть атомарным, как уже сказали, желательно чтобы было одно действие и одна проверка

Johnnie
14.12.2016
05:57:46
Если тест негативный, то там все варианты, которые не подходят
я планировал один тест когда все збс, и отдельные тесты для каждого поля когда не збс.

в итоге придется отдельные тесты для каждого поля и каждого случая

Dmitriy
14.12.2016
05:59:09
Ну это так сказать самый идеальный вариант, можно ему не следовать

Johnnie
14.12.2016
05:59:44
да я ж учусь, можно и так)

я так понял принцип DRY в тестах не действует?

то есть не нужно изобретать велосипеды чтобы убрать дублирование кода?

Admin
ERROR: S client not available

Igor
14.12.2016
06:03:03
в unittest есть setUp/tearDown вот в setUp можно пихать создание каких-нибудь хуевин, по которым уже будут гоняться тесты

Dmitriy
14.12.2016
06:06:17
В тестировании много разных принципов, они все используются для написания автотестов также, но и про принципы программирования также не стоит забывать. В общем как уже сказали можно использовать прекондишены для тестов на разных уровнях

Johnnie
14.12.2016
06:07:37
а в setUp() не должно быть assert'ов?

Dmitriy
14.12.2016
06:08:04
По идее не должно, потому что это прекондишены, а не тесты, у них другая цель

Цель привести систему в нужное состояние

Johnnie
14.12.2016
06:10:18
ок, спасибо, пойду переписывать :)

https://paste.fedoraproject.org/506045/96284148/ вроде получше стало выглядеть

Denis
14.12.2016
06:21:57
Там разве нет self.assertTrue?

Johnnie
14.12.2016
06:22:09
только пичарм ругается, что я переменные объявляю не в __init__ :)

Там разве нет self.assertTrue?
есть оказывается, поменяю

Google
Johnnie
14.12.2016
06:23:02
self.assertFalse(form.validate())

Dmitriy
14.12.2016
06:27:10
Не совсем понимаю зачем нужно проверять значения валидатора, типа они могут быть неизвесты?

Johnnie
14.12.2016
06:28:31
ну я писал с расчетом на то, чтобы в случае чего поменять их только в форме и не менять в тесте

Dmitriy
14.12.2016
06:31:26
Я видимо просто не заметил, теперь все понял

Max
14.12.2016
07:10:59
Vsem dibroe ytro

Posovetyite shto zamytit' na django v chelyax obycheniya , s freamworkom znakom ne davno

Pavel
14.12.2016
07:15:45
Posovetyite shto zamytit' na django v chelyax obycheniya , s freamworkom znakom ne davno
например, сайт вопросов и ответов.

Max
14.12.2016
07:35:33
Dmitriy
14.12.2016
07:37:38
Bordu anonimnuiy esche

Denis
14.12.2016
07:38:22
>bordi >2k16

Dmitriy
14.12.2016
07:38:49
Как будто что-то плохое

Denis
14.12.2016
07:39:03
Как будто что-то нужное

Pavel
14.12.2016
07:39:13
>bordi >2k16
какая разница, на чём учиться.

Dmitriy
14.12.2016
07:39:29
Вот именно

А если актуальное, то вот пример - нормальную систему для управления тестами

Ilya
14.12.2016
07:48:51
Бери что дают=)

Albatrosicks
14.12.2016
07:49:17
Веб облако домашнее

Dmitriy
14.12.2016
07:49:20
Скрипт сообщества например какого нибудь

Страница 919 из 1885

Эта группа больше не существует Эта группа больше не существует