@ru_python

Страница 8290 из 9768
Shieldy
06.03.2019
11:27:24
Добро пожаловать, @adylbekovr8888! Не забудь ознакомиться с правилами чата: https://t.me/ru_python/802295!

Alex
06.03.2019
11:28:13
Спамботы набигают!

Христофор Маврикиевич
06.03.2019
11:28:13
дичь какая

Alex
06.03.2019
11:30:07
(Занял рекламируемый алиас в телеге, лол.)

Google
Roman
06.03.2019
11:35:04
У нас спор на работе. Мы пишем тесты. От сервера приходят события разных типов (в json). Мы парсим json и генерируем экземпляры соответвствующих классов. Как правильнее проверять в тестах тип события: с помощью isinstance или путём проверки event.type, которое является enum (его создавать разумеется до этого)?

Roman
06.03.2019
11:36:19
Питон же, утиная типизация
Я знаю про утиную типизацию. Но мне надо именно проверить, что это нужный тип события. Тест такой.

С одной стороны, isinstance считается плохим приёмом, с другой, enum - это дублирование в коде и памяти.

Cookie
06.03.2019
11:37:54
Типа, нужный тип объекта?

Shieldy
06.03.2019
11:38:03
Добро пожаловать, @vadimos_man! Не забудь ознакомиться с правилами чата: https://t.me/ru_python/802295!

Roman
06.03.2019
11:38:31
Типа, нужный тип объекта?
Ну события разных типов бывают. Типы событий - это абстракция в тестируемом софте.

Tishka17
06.03.2019
11:40:54
Я знаю про утиную типизацию. Но мне надо именно проверить, что это нужный тип события. Тест такой.
Я бы все равно проверил, что это выглядит и ведёт себя как уточка.

Roman
06.03.2019
11:42:11
Я бы все равно проверил, что это выглядит и ведёт себя как уточка.
А если 2 типа события с одинаковыми аргументами, но разного типа? Тип - это тоже данные. Не проверяя их, мы теряем информацию.

Tishka17
06.03.2019
11:43:09
Ну по крайней мере для питона

Google
Roman
06.03.2019
11:47:02
Тогда они одинаковые и могут использоваться друг вместо друга
Нет. Например: {'type': 'system_start', 'time': ...}, {'type': 'system_stop', 'time': ...}.

Tishka17
06.03.2019
11:47:20
ну тогда тестируй без парсинга

сам json

и type - одно из полей

Dk
06.03.2019
11:48:28
Оп, читаю тут статью на хабре, а там тишка

Доки на русский переводит

спасибо всё равно

Tishka17
06.03.2019
11:49:12
Нет. Например: {'type': 'system_start', 'time': ...}, {'type': 'system_stop', 'time': ...}.
Я бы разделил тест типов с проверкой исходного словаря. И тест уже данных по разным событиям - там уже тип не будет проверяться, только полч

Доки на русский переводит
Ну вообще да, перевод практически.

Roman
06.03.2019
11:50:46
ну тогда тестируй без парсинга
Не удобно же. Там может быть сложная структура с десятками полей разного типа и несколькими уровнями вложенности.

Tishka17
06.03.2019
11:51:19
Хм

Хз тогда

Googlom
06.03.2019
11:52:37


результат



Tishka17
06.03.2019
11:53:19
Ну

Google
Tishka17
06.03.2019
11:53:23
А надо?

Googlom
06.03.2019
11:53:31
можно ли и чередование в диапазоне сделать?

Roman
06.03.2019
11:53:33
А парсер в разные классы специально для тестов сделан?
Да. Наш отдел из 4 человек только тестами и занимается. Гипотетически, мы можем это вынести в библиотеку и отдавать клиентам (у сервера есть REST API). Так что классы в любом случае - хорошо. Вопрос в том, нужен ли enum.

Tishka17
06.03.2019
11:53:45
можно ли и чередование в диапазоне сделать?
Только непрерывные диапазона что ли надо?

Googlom
06.03.2019
11:53:50
да

Roman
06.03.2019
11:55:13
И гипотетическая возможность ошибится и получить SystemStartAction(type=ActionType.SYSTEM_STOP)?

Tishka17
06.03.2019
11:57:00
А как же дублирование?
Ну это более явно, чем проверка класса. Но хз на самом деле

И гипотетическая возможность ошибится и получить SystemStartAction(type=ActionType.SYSTEM_STOP)?
Так ты потом все равно будешь другие поля проверять, не?

Roman
06.03.2019
11:57:48
Ну это более явно, чем проверка класса. Но хз на самом деле
Ок. Вот у меня такие же чувства. У нас 3/4 считают, что надо делать isinstance, я - за enum.

Tishka17
06.03.2019
11:58:06
И гипотетическая возможность ошибится и получить SystemStartAction(type=ActionType.SYSTEM_STOP)?
У тебя же нет бизнес логики в тестах. А значит две структуры с одним полями вполне заменяют друг друга

Roman
06.03.2019
11:58:59
Так ты потом все равно будешь другие поля проверять, не?
Ну и что? А если по полям всё совпадают, но получается рассинхронизация, что это хорошо что ли?

Tishka17
06.03.2019
11:59:32
Ну и что? А если по полям всё совпадают, но получается рассинхронизация, что это хорошо что ли?
Если по полям всё совпадает и сервер вернул нужный тип, значит сервер вернул что надо. Не?

Roman
06.03.2019
11:59:53
У тебя же нет бизнес логики в тестах. А значит две структуры с одним полями вполне заменяют друг друга
Нет. Есть. Я проверяю, что пришло событие определённого типа. И в зависимости от типа может выполняться разный код проверки.

Shieldy
06.03.2019
11:59:55
Добро пожаловать, Riortre! Не забудь ознакомиться с правилами чата: https://t.me/ru_python/802295!

Tishka17
06.03.2019
11:59:55
Ладно, я не знаю хорошего решения

Admin
ERROR: S client not available

Roman
06.03.2019
12:00:27
Ладно, я не знаю хорошего решения
Ок. Вроде задача простая, а вот я тоже не знаю.

Спасибо за время, @Tishka17.

Google
Riortre
06.03.2019
12:00:55
@Tishka17 подскажи плз, кто забанил Forden пару минут назад?

Aragaer
06.03.2019
12:00:55
все жсоны имеют один и тот же тип

но различаются содержимым

@Tishka17 подскажи плз, кто забанил Forden пару минут назад?
случайно не тот, который "проверьте бота, не обман?"?

Nikolay
06.03.2019
12:01:24
Riortre
06.03.2019
12:01:31
Какого бота?

Я могу хотя бы причину узнать?

И причем в куче чатов сразу

Roman
06.03.2019
12:02:40
все жсоны имеют один и тот же тип
И что? JSON - это просто формат передачи данных. Меня и волнует содержимое.

Aragaer
06.03.2019
12:02:48
вот содержимое и проверяй

Roman
06.03.2019
12:09:06
вот содержимое и проверяй
Я понимаю. См. https://t.me/ru_python/828941

Shieldy
06.03.2019
12:09:34
Добро пожаловать, Сергей Мулюкин! Не забудь ознакомиться с правилами чата: https://t.me/ru_python/802295!

Сергей
06.03.2019
12:09:48
как пользоваться полем ввода Entry из tkinter подскажите пж

Tishka17
06.03.2019
12:10:28
Я могу хотя бы причину узнать?
Спам, несогласованное вождение бота в чат

Сергей
06.03.2019
12:12:30
как пользоваться полем ввода Entry из tkinter подскажите пж

базу данных делаю не могу реализовать ввод

Tishka17
06.03.2019
12:12:58
это про инстаграм?
Я не помню, что там было. Какая-то хрень

Dk
06.03.2019
12:13:27
Так в удалённых же есть

Google
Tishka17
06.03.2019
12:13:38
Кажется, что-то про студентов и упоминание левого чата

Dk
06.03.2019
12:13:49
Понял

Сергей
06.03.2019
12:14:41
как пользоваться полем ввода Entry из tkinter подскажите пж

Dk
06.03.2019
12:14:54
Посмотри доки

Страница 8290 из 9768