Denis
Ты вообще что-то странное там делаешь
Valera
Так сделай
так мне так не надо если бы нужно было, вопрос был бы по-другому
Denis
Зачем mock = FakeVideo(), если это нигде больше не используется
Tishka17
Привет, снова я с моками для тестов. Все никак не могу разобарться. Помогите разобраться плиз https://ru.stackoverflow.com/questions/976722/unittest-in-django-mock-singleton-instance-for-tests
Эм. Ты что творишь. Сначала создаешь мок через with, а потом игнорируешь его и перезаписываешь переменную своим FaleVideo
Denis
И ты уверен, что код к нему именно по этому пути обращается?
Denis
Патч принимает второй аргумент, если что
Леонид
А у тебя случайно не несколько потоков?
хостинг python anywhere, боюсь не в курсе сколько их там, и так же боюсь не в курсе про многопоточность особо 😅
Tishka17
Зачем вообще патч?
Valera
Патч принимает второй аргумент, если что
Как грамотно будет сделать? Я просто окончательно запутался в этой теме..
Tishka17
Это типа мы не осилили DI и поэтому по-быстрому залепим как получится?
Tishka17
В чем плох способ замокать?
Тем что это значит, класс проектировался так, что в нем ничего не меняется, а ты пытаешься заменить
Tishka17
В зависимости от ситуации, могут быть разные проблемы
Tishka17
От "я замокал, а он лезет не туда" и "я замокал и оно начало падать", до тестирования внутренней структуры вместо логики работы
Valera
Понял, но вы так и не дали дельного совета, что можно и нужно делать Использовать DI или продолжить с mock. Если с mock, в чем тогда ошибка, куда посомтреть примеры, что почитать. Если DI - куда там рыть?
Tishka17
Если DI, то твой объект, который обращается к SomethingVideo должен получать снаружи ссылку на его инстанс (лучше - в ините). Тогда ты в проде передаешь свой VimeoVideo, а в тестах FakeVideo и ничего патчить не надо
Андрей
ку) кто с django работает? у меня проблема есть блог и на странице выдаются посты, но... Посты выдаются всех юзеров как можно сделать вывод постов тольеко того юзера к которому они привязаны?
Tishka17
Можешь дать какие-нибудь полезные ссылки, чтобы изучтить эту тему?
https://ru.m.wikipedia.org/wiki/%D0%92%D0%BD%D0%B5%D0%B4%D1%80%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B7%D0%B0%D0%B2%D0%B8%D1%81%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8 И наверно у банды четырех в книжке есть
Tishka17
Доступа к коду в данный момент нет
В данный момент - это прямо сейчас или надо сделать без редактирования кода?
Tishka17
Силой сысли
Я тут уже ничему не удивляюсь
Tishka17
Спасибо
Вообще хз как в джанге, там часто всякие антипаттерны юзаются.
Tishka17
Например, юнит тесты, которые лазят в реальную базу вместо заглушки
Nikolay
Понедельник - день тяжелый
Denis
Например, юнит тесты, которые лазят в реальную базу вместо заглушки
А чем это плохо? Или ты предлагаешь свою СУБД для тестов реализовать?
Андрей
Понедельник - день тяжелый
У меня уже как 2 с лишним часа вторник)
Tishka17
А чем это плохо? Или ты предлагаешь свою СУБД для тестов реализовать?
Эм, юнит тест должен тестировать отдельный модуль. Например, если ты проверяешь бизнкслогику, ты должен проверять бизнеслогику без привязки к конкретной реализации базы
Denis
Смысл мокать модели?
Tishka17
Смысл мокать модели?
Например, чтобы не зависеть от реализации модели
Denis
Например, чтобы не зависеть от реализации модели
Зачем? Ты на другую орм собираешься переезжать?
Tishka17
Чтобы убедиться, что ты тестируешь именно модуль, а не все целиком
Nikolay
что вымачиваете?
Tishka17
Ну я и говорю, вместо юнит теста, получаешь интеграционный
Denis
Какой смысл тестировать модуль отдельно?
Tishka17
Какой смысл тестировать модуль отдельно?
Какой смысл в юнит тестах вообще?
Denis
Ты можешь написать юнит-тесты, тебе никто не запретит
Tishka17
Я не говорю, что это плохо. Просто это уже не юнит тесты
Tishka17
И это усложняет тестирование
Denis
Но одними ими точно не обойдешься
Tishka17
Вместо того, чтобы замокать один вызов, тебе приходится целую базу поднимать. А это не быстро
Tishka17
Он сам это делает, несколько секунд тратит
На полное пересоздание базы?
Denis
Он же не данные туда вставляет
Tishka17
Дропнуть базу, прогнать все миграции и засунуть туда тестовые данные? На каждый тест по несколько секунд. На сто тестов уже несколько минут. А это мало тестов
Denis
Он прогоняет миграции один раз в начале
Denis
А потом?
А потом вроде создает транзакцию, в ней делает тест и откатывает. Но я в этом не сильно шарю, утверждать не буду
Tishka17
Эм, не всегда можно одной транзакцией обойтись
Tishka17
Да и не все базы умеют вложенные транзакции, а ты наверняка в коде юзаешь
Valera
Дропнуть базу, прогнать все миграции и засунуть туда тестовые данные? На каждый тест по несколько секунд. На сто тестов уже несколько минут. А это мало тестов
Если про Джанго - то например у меня пока 100 тестов - это где-то минута И то, можно уменьшить время, если сквоштиь миграции
Tishka17
Или это пара ручек всего
Valera
ключевое слово "пока"
Denis
Для микросервиса нормально
Tishka17
Ну да
Nikolay
С админом нельзя ругаться
Valera
Никто не ругается) Это обсуждение
Nikolay
Сходка таксистов
Tishka17
Да норм
Valera
Все равно насчет мока, того вопроса что я скидывал. Если я все-таки решу продолжить с патчем. Мне по сути нужно просто подменить весь оргинальный класс на фейковый. Если даже это была бы обычная тест функция, как там организовать этот момент - подмена одноого класса на другой?
Nikolay
🍆
Fuckyeah
#Работа Нужно написать бота для чата активности для тг с простой регистрацией и проверкой в инстаграме на наличие активности лайк/коммент/сохранение от участника чата разместивший свой ник, если действие не совершенно – предупреждение или кик с чата. 1) Вход в чат активности Бот встречает нового юзера с сообщения Привет, @ник_тг! Внимательно прочитайте правила. (ссылка на закрепленную запись в чате) 2) Размещение пользователем сообщение начиная с юзернайм в инсте с восклицательными знаками - !!ник_инстаграм78 3) Далее ссылка на пост, который нужно откомментить, лайкнуть, добавить в закладки Требование к ссылкам, которые пишутся в сообщении, есть лишний код или ютм метки нужно удалять. Нужно, что бы бот удалял неправильные ссылки в чате в которых есть UTM метка или другие лишние коды, как правило они начинаются с «?» знака. пример НЕ правильной ссылки https://www.instagram.com/p/A2hnvaK/?utm_source=ig_sh.. Правильная ссылка https://www.instagram.com/p/A2hnvaK/ 4) После того, как пользователь скинул свою ссылку, ему необходимо откоментить, лайкнуть или добавить в закладки (в зависимости от задания) 7 ссылок от пользователей, размещенных перед ним в чате активности, своим инстаграм профилем. 5) Если задание на комментарий, необходимо чтобы бот проверял чтобы было минимум 4 слова по 3 буквы в коменте от пользователя. 6) Бот проверяет профили пользователей в инстаграм на выполнение задания (лайк, коммент, сохранение). Если бот не находит выполненное задание, пользователь в телеграм получает сообщение о нарушении правил чата и выдает предупреждение о удалении. Повторное нарушение правил чата - удаление навсегда (восстановление платное). 7) Так же имеется ВИП доступ для пользователей. Человек, который приобрел ВИП доступ может просто скидывать ссылки в чат, но он не обязан лайкать, коментить и оставлять закладки. Его бот должен пропускать и не удалять из чата за неактивность на других страницах в инстаграм. сроки и цену в лс
Костянтин
Интересно, мне кажется за такое 1-2к зелёных А вы че скажете, эксперты ?
Костянтин
Бабки взять может но не сделает)
🍁 Jaŭhien
Ну мб и не сделает, но попробует =)
Vladislav
Друзья, а как называется эта хрень ? python2 << EOF import sys print sys.version print 'custom data' EOF хочу погуглить-почитать. Имею ввиду запуск программы из bash-a с передачей агрумента таким-вот оператором (или что это?): >>