Как стать автором
Обновить
26
0

Python. Developer/QA Automation.

Отправить сообщение

За границей Hello World: полный гайд по разработке Telegram ботов на Python + Aiogram 3. Часть 2: Меню и OpenAI API

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров93K

Привет, Хабр! Продолжаю серию статей про разработку telegram-ботов на библиотеке aiogram и языке программирования Python. Хочется отметить, что статья не является документацией или учебником. Я просто рассказываю пошагово как разработать полнофункционального бота, стараясь затронуть как можно больше тем.

В предыдущей части мы настроили окружение и среду разработки и теперь готовы начать писать бота. В этой статье мы создадим меню и базовую логику взаимодействия с пользователем, а также подключим API OpenAI

Читать далее
Всего голосов 6: ↑5 и ↓1+4
Комментарии20

7 и 1/2 подходов к проверке атрибутов классов в Python

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров12K

Проверка типов и проверка значений обрабатываются в Python гибким и неявным образом. В Python начиная с Python 3 появился модуль typing, который обеспечивает поддержку подсказок типов. Но для проверки значений не существует единого способа проверки.

Один из сценариев, в котором нам нужна проверка значений — это инициализация экземпляра класса. На первом этапе мы хотим убедиться в правильности вводимых атрибутов, например, адрес электронной почты должен иметь правильный формат xxx@xx.com, возраст не должен быть отрицательным, фамилия не должна превышать 20 символов и т.д.

В этой статье я хочу продемонстрировать 7(с половиной - прим.пер.) вариантов проверки атрибутов класса с помощью встроенных модулей Python или сторонних библиотек. Интересно, какой вариант вы предпочитаете? Если вы знаете другие варианты, пишите в комментариях. Поехали.

Читать далее
Всего голосов 15: ↑15 и ↓0+15
Комментарии8

Как правильно отвечать на вопрос “Какие у вас зарплатные ожидания?” на рынке США

Время на прочтение6 мин
Количество просмотров66K

На первом интервью чаще всего рекрутер может задать вопрос о зарплатных ожиданиях кандидата — “What Are Your Salary Expectations?”. Я принимаю участие в найме продукт-менеджеров, дизайнеров и инженеров и хочу поделиться с вами своим опытом как правильно отвечать на этот вопрос применительно к рынку США.

Я не рекомендую раскрывать никаких цифр как на ранней стадии процесса интервью, так и во время раунда интервью. В этой статье я расскажу почему именно такая стратегия является наиболее выигрышной.

Читать далее
Всего голосов 76: ↑65 и ↓11+74
Комментарии161

Pytest-фикстуры на человеческом

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров20K

Привет, сообщество.

Я хотел бы поделиться с Вами своим объяснением того, как понять фикстуры и как начать их использовать в своих проектах, тем самым начать радоваться жизни).

Вероятно, даже продвинутый QA Automation найдет что-то новое, но моя цель объяснить на пальцах эту тему начинающим, ибо именно в ней зачастую происходят затыки.

Читать далее
Всего голосов 15: ↑12 и ↓3+14
Комментарии38

Как правильно писать API авто тесты на Python

Время на прочтение19 мин
Количество просмотров50K

Как правильно писать API авто тесты на Python используя Pytest, Pydantic, Httpx, Allure.

Эта статья как продолжение статьи Как правильно писать UI авто тесты на Python. Если мы говорим про UI автотесты, то тут хотя бы есть паттерны Page Object, Pagefactory; для API автотестов таких паттернов нет. Да, существуют общие паттерны, по типу Decorator, SIngletone, Facade, Abstract Factory, но это не то, что поможет протестировать бизнес логику на уровне API тестируемой системы

Читать далее
Всего голосов 14: ↑9 и ↓5+5
Комментарии17

Как правильно писать UI авто тесты на Python

Время на прочтение10 мин
Количество просмотров32K

Как правильно писать UI авто тесты на python используя Page Object + Page Factory.

Читать далее
Всего голосов 13: ↑10 и ↓3+7
Комментарии7

6 Python декораторов, которые значительно упростят ваш код

Время на прочтение5 мин
Количество просмотров57K

"Простое лучше сложного".

Лучшая функция Python, которая применяет эту философию из "дзен Python", - это декоратор.

Декораторы могут помочь вам писать меньше кода для реализации сложной логики и повторно использовать его повсюду.

Более того, существует множество замечательных встроенных декораторов Python, которые значительно облегчают нам жизнь, поскольку мы можем просто использовать одну строчку кода для добавления сложных функций к существующим функциям или классам.

Болтать не буду. Давайте посмотрим на отобранные мной 6 декораторов, которые покажут вам, насколько элегантен Python.

Читать далее
Всего голосов 61: ↑57 и ↓4+69
Комментарии26

Блокнот-шпаргалка для быстрого Data preprocessing

Время на прочтение8 мин
Количество просмотров11K
Часто люди, заходящие в область Data Science, имеют не совсем реалистичные представления о том, что их ждет. Многие думают, что сейчас они будут круто писать нейросети, создавать голосового помощника из Железного Человека или обыгрывать всех на финансовых рынках.
Но работа Data Scientist завязана на данных, и один из важнейших и время затратных моментов — это обработка данных перед тем, как их подавать в нейросеть или анализировать определенным способом.

В этой статье наша команда опишет то, как можно легко и быстро обработать данные с пошаговой инструкцией и кодом. Мы старались сделать так, чтобы код был довольно гибким и его можно было применять для разных датасетов.

Многие профессионалы возможно и не найдут ничего экстраординарного в этой статье, но начинающие смогут подчерпнуть что-то новое, а также каждый, кто давно мечтал сделать себе отдельный notebook для быстрой и структурированной обработки данных может скопировать код и отформатировать его под себя, или скачать готовый notebook с Github.
Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Комментарии1

Работа с поверхностными и глубокими копиями в Python

Время на прочтение19 мин
Количество просмотров11K

В этой статье объясняется, как делать копии списков Python, массивов NumPy и датафреймов Pandas при помощи операций получения срезов, списочного индексирования (fancy indexing) и логического (boolean indexing). Эти операции очень часто используются при анализе данных и должны рассматриваться всерьёз, поскольку ошибочные предположения могут привести к падению быстродействия или неожиданным результатам.

Python кажется простым, но всякий раз, возвращаясь к его азам, ты находишь новые для освоения вещи. Здесь на ум приходит известное изречение Эйнштейна:

«Чем больше я узнаю, тем больше понимаю, как много я ещё не знаю».
Читать дальше →
Всего голосов 42: ↑42 и ↓0+42
Комментарии4

Группируем текстовые записи с помощью Python и CountVectorizer

Время на прочтение9 мин
Количество просмотров4.9K

Общедоступные реестры клинических исследований, такие как clinicaltrials.gov, печально известны низкой структурированностью данных. Попытка построить сводный отчет, например, о количестве исследований, проводимых ведущими фармкомпаниями, натыкается на давно всем надоевшую проблему множественных написаний одинаковых по смыслу значений.

В очередной раз столкнувшись с этой проблемой при анализе данных в pandas, я решил подключить к решению CountVectorizer из scikit-learn. Результат показался интересным. Сразу оговорюсь, что в данном случае я не использую методы и алгоритмы машинного обучения, а только CountVectorizer как инструмент.

Читать далее
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Выбор оптимального решения для хранения разнородных данных pandas

Время на прочтение8 мин
Количество просмотров7.4K

Проблема выбора формата файла, с которым предстоит работать для чтения и записи  pandas.DataFrame, заключается как раз в том, что есть из чего выбрать: даже сам pandas включает в себя функционал, позволяющий работать с большим перечнем типов файлов. Обилие доступных для данной задачи форматов обусловлено невозможностью решить проблему импорта/экспорта раз и навсегда: ничего идеального, как и формата для хранения данных, к сожалению, не существует, поскольку даже самый, на первый взгляд, оптимальный и минимально затратный по ресурсам pickle способен создать очень много проблем. 

Читать далее
Всего голосов 4: ↑4 и ↓0+4
Комментарии5

Категориальные признаки

Время на прочтение8 мин
Количество просмотров56K

Не одним One-Hot единым...

В данной статье разберемся с кодированием категориальных данных. В профессиональной среде нередко о существовании чего-то кроме OH или Label Encoder не догадываются не только рядовые Junior DS, но и даже Middle, а иногда и Senior. Исправить данную несправедливость и призвана данная статья.

Читать далее
Всего голосов 4: ↑3 и ↓1+2
Комментарии0

Регулярки (regex) — основы для решения кейсов, про которые не пишут в статьях про основы

Время на прочтение4 мин
Количество просмотров25K

"Там просто регулярку написать" - говорили они...

Читать далее
Всего голосов 30: ↑25 и ↓5+34
Комментарии47

Обход ReCaptcha в Selenium тестах

Время на прочтение4 мин
Количество просмотров61K
ReCaptcha (она же всенародно любимая «капча») — одна из самых болезненных вещей, с которой может столкнуться автоматизатор тестирования на своём пути. В Сети гуляют тысячи разнообразных видео, записанных выходцами из солнечной Индии, касательно того, какими танцами с бубном возможно обмануть этого зверя. Действительно, достаточно сложно пытаться взаимодействовать с помощью запрограммированных скриптов со штукой, основная цель которой — убедиться что «вы не робот».

Очень важный дисклеймер: обмануть капчу невозможно.

Если вы уже столкнулись с этой проблемой, и читаете эту статью, пытаясь нагуглить рецепт панацеи, то знайте, что его не существует. Тем более, в вашей голове уже скорее всего возникли инновационные мысли о том, чтобы сымитировать реалистичное поведение пользователя с помощью WebDriver, путём рандомного mouse overing'а элементов, кликов по инпутам, и бережно расставленных Thread.sleep(). Абсолютно точно известно, что этот подход работать не будет, не тратьте свое время попусту.

image

Получается, выхода нет?
Читать дальше →
Всего голосов 17: ↑15 и ↓2+13
Комментарии18

Эмуляторы, симуляторы или тестовые фермы. Что выбрать для мобильного тестирования?

Время на прочтение7 мин
Количество просмотров24K

Привет! Меня зовут Татьяна Дерягина, я QA-инженер из команды мобильного тестирования в СберМаркете. Моя команда работает дистанционно, находясь в разных городах России. Хочу рассказать, как как мы адаптировались к процессу тестирования, без большого количества реальных девайсов и не потеряли качество продукта.

Читать далее
Всего голосов 4: ↑4 и ↓0+4
Комментарии2

Тестирование миграции данных на python с pytest-bdd и testcontainers

Время на прочтение6 мин
Количество просмотров3.1K

В рамках проекта цифровой модернизации для одного из наших клиентов возникла задача миграции данных из одной модели хранения в другую. Для тестирования такого решения мы обратились к BDD практикам и виртуализации зависимостей с помощью контейнеров. В данном посте мы рассмотрим как можно организовать тестирование подобного решения с помощью pytest-bdd и testcontainers на python.

Читать далее
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Taichi и 100-кратное ускорение Python-кода

Время на прочтение12 мин
Количество просмотров35K

Python стал самым популярным языком во многих быстроразвивающихся областях, таких, как глубокое обучение и различные направления анализа и обработки данных. Но при этом за удобство работы с Python-кодом, за высокий уровень его читабельности, приходится платить производительностью. Конечно, все мы время от времени жалуемся на скорость работы программ, и Python, безусловно, не стоит винить во всех грехах. Несмотря на это, справедливым будет заявление о том, что природа Python, интерпретируемого языка, не способствует высокой производительности кода, особенно когда речь идёт о «тяжёлых» вычислениях (один из признаков таких вычислений — наличие в программе нескольких вложенных циклов).

Если вы когда-либо попадали в одну из следующих ситуация — тогда эта статья, определённо, написана для вас.

Читать далее
Всего голосов 53: ↑53 и ↓0+53
Комментарии5

Руководство к дескрипторам

Время на прочтение10 мин
Количество просмотров168K

Краткий обзор


В этой статье я расскажу о том, что такое дескрипторы, о протоколе дескрипторов, покажу как вызываются дескрипторы. Опишу создание собственных и исследую несколько встроенных дескрипторов, включая функции, свойства, статические методы и методы класса. С помощью простого приложения покажу, как работает каждый из них, приведу эквиваленты внутренней реализации работы дескрипторов кодом на чистом питоне.

Изучение того, как работают дескрипторы, откроет доступ к большему числу рабочих инструментов, поможет лучше понять как работает питон, и ощутить элегантность его дизайна.

Читать дальше →
Всего голосов 51: ↑48 и ↓3+45
Комментарии5

Вот почему вам стоит использовать оператор Walrus в Python

Время на прочтение8 мин
Количество просмотров28K

Выражение присваивания (также известное как оператор walrus) — это функциональность, которая появилась в Python недавно, в версии 3.8. Однако применение walrus является предметом дискуссий и множество людей испытывают безосновательную неприязнь к нему.

Под катом эксперт компании IBM Мартин Хайнц*, разработчик и DevOps-инженер, постарается убедить вас в том, что оператор walrus — действительно хорошее дополнение языка. И его правильное использование поможет вам сделать код более лаконичным и читаемым.

*Обращаем ваше внимание, что позиция автора может не всегда совпадать с мнением МойОфис.

Читать далее
Всего голосов 50: ↑47 и ↓3+52
Комментарии62

Подтесты в Python

Время на прочтение13 мин
Количество просмотров9.9K

Недавно я сделал опрометчивый твит, в котором намекнул на то, что у меня имеется глубоко продуманное мнение по одному важному вопросу. Я написал, что пакет pytest-subtests достоин того, чтобы им пользовалось бы больше программистов. Я даже дошёл до того, что, говоря о подтестах (subtests), сказал, что они были единственным, что мне по-настоящему нравилось в unittest до появления их поддержки в pytest. И, как на грех, Брайан Оккен предложил мне поучаствовать в подкасте Test and Code, чтобы подробнее обсудить подтесты. Я могу лишь догадываться о том, что он это сделал, дабы преподнести мне урок, показать мне, что я не должен, накачавшись продуктами Splenda и травяным чаем, выдавать скороспелые мнения о тестировании кода.Но, тем не менее, когда Брайан взглянет на меня со своей хитрой улыбкой и скажет: «Итак, ты готов поговорить о подтестах?», я планировал ответить: «Да, я готов — сделал обширные заметки и набрал справочных материалов». А когда мы вместе будем стоять на сцене, получая Дневную премию «Эмми» за лучший подкаст о тестировании, я шепну ему: «Я раскрыл твою хитрость, и хотя я тебя обыграл, ты реально показал мне — что такое скромность», а по его щеке скатится одинокая слеза.

Или, что скорее всего так и есть, ему просто хотелось пригласить кого-то, с кем можно поговорить об этом конкретном аспекте Python-тестирования, а я оказался одним из тех немногих, встретившихся ему, кто высказывал по этому поводу своё мнение. В любом случае, этот пост будет играть роль моих заметок по механизму подтестов из unittest, который появился в Python 3.4. Здесь же пойдёт речь о сильных и слабых сторонах подтестов, о сценариях их использования. Этот материал можно считать дополнением к подкасту Test and Code Episode 111.

Читать далее
Всего голосов 13: ↑12 и ↓1+22
Комментарии6

Информация

В рейтинге
Не участвует
Откуда
Нижний Новгород, Нижегородская обл., Россия
Зарегистрирован
Активность