@ru_python

Страница 8417 из 9768
IDK
19.03.2019
06:47:11
Доброе утро

?
19.03.2019
06:47:42
Ну или PA

LighteR
19.03.2019
06:48:42
юнит-тест обертки над базой - нереально. Тебе надо полностью замокать SQL для этого
Ты имеешь в виду делать мок, который парсит SQL? Так делать не надо

Google
Tishka17
19.03.2019
06:49:12
Ты имеешь в виду делать мок, который парсит SQL? Так делать не надо
ну так у тебя класс работающий с базой наверняка ничего больше не делает кроме как генерит sql

Paul
19.03.2019
06:50:14
тогда что там у тебчя облако умеет
облако умеет что надо, мне с клиента нужно отправить на сервер print(alices_public_key) # UmbralPublicKey:036e2d8feb51ad5 print(type(alices_public_key)) # "<class 'umbral.keys.UmbralPublicKey'>" в комментах написано что это к серверу вопросов нет как это прередать по Hyper Text Transport Protocol HTTP (S) ?

Tishka17
19.03.2019
06:50:56
хуй знает что такое UmbralPublicKey и при чем тут HTTP и зачем тебе это передавать

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

Paul
19.03.2019
06:52:01
хуй знает что такое UmbralPublicKey и при чем тут HTTP и зачем тебе это передавать
мне нужно передать <class 'umbral.keys.UmbralPublicKey'> авторизоваться не надо

LighteR
19.03.2019
06:53:50
ну так у тебя класс работающий с базой наверняка ничего больше не делает кроме как генерит sql
Ну для того чтобы проверить что на выходе получился ожидаемый sql база не нужна. Достаточно сматчить его с каким-то эталонным значением

Paul
19.03.2019
06:54:10
хуй знает что такое UmbralPublicKey и при чем тут HTTP и зачем тебе это передавать
как сформировать запрос на сервер с <class 'umbral.keys.UmbralPublicKey'> серилизовать в байты?

LighteR
19.03.2019
06:54:13
Вообще вот что пишет Мартин Фаулер по этому поводу: Your unit tests will run very fast. On a decent machine you can expect to run thousands of unit tests within a few minutes. Test small pieces of your codebase in isolation and avoid hitting databases, the filesystem or firing HTTP queries (by using mocks and stubs for these parts) to keep your tests fast.

Tishka17
19.03.2019
06:54:20
мне нужно передать <class 'umbral.keys.UmbralPublicKey'> авторизоваться не надо
Нельзя передать объект, можно передать данные. Вопросы: 1. Откуда ты взял объект 2. Что будешь делать на сервере? 3. Клиент и сервер твои?

Paul
19.03.2019
06:55:40
Нельзя передать объект, можно передать данные. Вопросы: 1. Откуда ты взял объект 2. Что будешь делать на сервере? 3. Клиент и сервер твои?
да мои , но публичный ключ может себе копировать вся планета Земля, секъюрность не нужна , нужно запаковать в запрос ключ и на сервере получить его

Tishka17
19.03.2019
06:56:09
Ну для того чтобы проверить что на выходе получился ожидаемый sql база не нужна. Достаточно сматчить его с каким-то эталонным значением
Эм, зачем проверять sql, когда надо проверять логику? Sql можно очень сильно изменить и функционально он останется тем же

Google
Paul
19.03.2019
06:56:50
Нельзя передать объект, можно передать данные. Вопросы: 1. Откуда ты взял объект 2. Что будешь делать на сервере? 3. Клиент и сервер твои?
и на клиенте и на сервере есть либа которая умеет работать с этим ключем, вопрос как по HTTP его передать

Paul
19.03.2019
06:58:28
ок

?
19.03.2019
06:59:01
ИМХО ему в бегиннерсы

Ksenia
19.03.2019
07:00:12
Есть видео лица на минуту, нужно в реальном времени рисовать 68 ключевых точек на нем. Все работает кроме того, как видео замедляется раза в два. В чем может быть ошибка?

Работа с openCV

Daniel
19.03.2019
07:00:59
@Tishka17 что такое R интерпритатор

LighteR
19.03.2019
07:01:14
то что описываешь ты - это интеграционные тесты

Tishka17
19.03.2019
07:02:57
Ты просто пытаешься сказать, что интеграционные тесты лучше юнит тестов
Да не, прост омне кажется тестировать фукнции вида execute(“seelct x from tablename. where ?>0”, (y,)) смысла нет

а слой работы с базой примерно такой

Daniel
19.03.2019
07:03:40
Что такое R interpritator ?

Hlp pls

Tishka17
19.03.2019
07:03:46
Daniel
19.03.2019
07:03:51
Ну ок

Tishka17
19.03.2019
07:04:06
R - это другой язык как бы

?
19.03.2019
07:04:50
Что такое R interpritator ?
Окей Гугл: rlang

LighteR
19.03.2019
07:07:21
Tishka17
19.03.2019
07:07:51
типа такой: def get_objects(y): return execute(“seelct x from tablename. where ?>0”, (y,)) ?
угу. типа изолировали работу с базой от бизнес логики

Google
Tishka17
19.03.2019
07:08:01
вот этот объект везде и мокаем

?
19.03.2019
07:08:15
Прям ботовский ник

Tishka17
19.03.2019
07:08:21
типа такой: def get_objects(y): return execute(“seelct x from tablename. where ?>0”, (y,)) ?
ты же рендеринг шаблонов не тестируешь, это праям похожий кейс

LighteR
19.03.2019
07:11:28
угу. типа изолировали работу с базой от бизнес логики
с эти я, в целом, согласен при условии если get_objects и execute с тайпхинтами и проверяются mypy. Иначе при изменении сигнатуры execute ты не узнаешь что get_objects стал с ним несовместим.

Юрий
19.03.2019
07:11:55
Прям ботовский ник
Ну да всех ботов Мама называет кожаными именами)

Tishka17
19.03.2019
07:12:12
ну и mypy лишним не будет, да

LighteR
19.03.2019
07:15:27
ну execute - это часть стандартной либы, а get_objects надо мокать и проверять что в него пихают что надо
а get_objects надо мокать и проверять что в него пихают что надо вот с этим полностью согласен ну execute - это часть стандартной либы либы тоже могу меняться. Ну и согласись, что написание теста на get_object это 1 минута времени и 2-3 строчки кода. И отказ от написания тестов на такие функции - это экономия на спичках

Tishka17
19.03.2019
07:17:01
ну хз как как мокать execute

LighteR
19.03.2019
07:17:40
ну хз как как мокать execute
Мокаешь execute c autospec=True

Ksenia
19.03.2019
07:18:46
Ksenia fugureskater: Есть видео лица на минуту, нужно в реальном времени рисовать 68 ключевых точек на нем. Все работает кроме того, как видео замедляется раза в два. В чем может быть ошибка? Работа с openCV ПОЖАЛУЙСТА, ОЧЕНЬ НАДО, ВСЕ ИДЕИ ПЕРЕПРОБОВАЛА??? Извините за беспокойство☺️

IDK
19.03.2019
07:18:55
Stoopid cat

Ksenia
19.03.2019
07:21:53
2,7 GHz

LighteR
19.03.2019
07:22:36
ну хз как как мокать execute
Например так def test_get_object(mocker): # arrange execute_mock = mocker.patch('somemodule.execute', autospec=True) # act result = get_object(42) # assert execute_mock.assert_called_once_with('seelct x from tablename. where ?>0', (42,)) assert result == execute_mock.return_value

?
19.03.2019
07:22:56
Stoopid cat
Ain’t nothing stupid about that cat

Ksenia
19.03.2019
07:23:23
возможно просто проц не справляется?
Для обработки видео должно хватать...

Наверное

?
19.03.2019
07:24:30
2,7 GHz
Ну у проца не только частота есть

Google
Tishka17
19.03.2019
07:24:33
хз что мы этим проверим

кроме того что константа будет в коде два раза

LighteR
19.03.2019
07:26:19
ну так это фактически тестирование что константа равна себе
нет, мы в первую очередь проверяем, что execute был вызван с правильной сигнатурой и что get_object вернула результат execute

матчить или нет сам sql это уже другой вопрос

если константа, то я бы не стал

Tishka17
19.03.2019
07:27:07
хм

LighteR
19.03.2019
07:28:15
если sql - это константа, то просто выносим ее в переменную и так же мокаем, а тесте проверям что в execute передали этот мок

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

Tishka17
19.03.2019
07:28:33
воу-воу

мокать константы

LighteR
19.03.2019
07:28:55
не мокаем, сорян

просто используем в проверке эту константу

я писал про константу, а мысли были про то, что sql может возвращаться из какой-то функции

в общем так def test_get_object(mocker): # arrange execute_mock = mocker.patch('somemodule.execute', autospec=True) y = 42 # act result = get_object(y) # assert execute_mock.assert_called_once_with(GET_OBJECTS_QUERY, (y,)) assert result == execute_mock.return_value

Tishka17
19.03.2019
07:39:30
окей, я понял идею, надо переварить

LighteR
19.03.2019
07:41:02
ну разве что мок должен возвращать список туплов и ассертить надо уже разобранные значения
Зачем? Ведь get_objects ничего не делает с результами execute, а только возвращает их. Если в get_objects будет какая-то обработка результата, то да, мок должен возвращать ожидаемый результат

Tishka17
19.03.2019
07:41:24
ну реально конечно же он будет не просто делать execute, а ещё создавать объект из строки

ведь мы же базу изолируем

Google
LighteR
19.03.2019
07:43:46
ну реально конечно же он будет не просто делать execute, а ещё создавать объект из строки
Ну если там будет какой-то маппинг, то наверняка эту будет выглядет как-то так: def get_objects(y): result = execute(...) objects = map_result(result) return objects Тогда можем просто замокать map_result и написать на него отдельный тест

Tishka17
19.03.2019
07:44:09
ну да

map_result понятно

/dev
19.03.2019
07:44:17
Ohayou gozaimasu!
Расист, она же китаянка

Aragaer
19.03.2019
07:44:39
замокать оба - из execute возвращать sentinel.execute_result, в map_result проверить, что его же передали аргументом

Aragaer
19.03.2019
07:45:01
из map_result вернуть sentinel.map_result, прверить что общий результат это оно и есть

беда в том, что ты по сути тестом зафиксировал код - его вообще поменять после этого нельзя

hachiman
19.03.2019
07:45:36
Расист, она же китаянка
но ПисНула по Англ

Aragaer
19.03.2019
07:46:02
почему китаянка, если буквы японские?

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