
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

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
из консоли все ок

Pavel
14.12.2016
01:41:19

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()

Pavel
14.12.2016
05:24:25

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
Смотря какой тип теста

Johnnie
14.12.2016
05:55:39

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
По идее не должно, потому что это прекондишены, а не тесты, у них другая цель
Цель привести систему в нужное состояние

Igor
14.12.2016
06:09:10

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__ :)

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

arisu
14.12.2016
07:34:32

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

Dmitriy
14.12.2016
07:39:29
Вот именно
А если актуальное, то вот пример - нормальную систему для управления тестами

Max
14.12.2016
07:44:13

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

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

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