Основатель школы автотестировщиков QA.GURU проводит бесплатный интенсив «Из баг-репортов до первого автотеста на Python»
🔜 Во вторник, 24 июня, в 12:00 по МСК. Бесплатно.
Вы начинающий автоматизатор или ручной тестировщик? Займите место сейчас▶
За несколько часов опытный инженер объяснит, как написать и запустить автотест🤓
Что сделаете за занятие:
— Напишете свой автотест на Python с нуля.
— Настроите рабочую среду за 10 минут (и она реально будет работать).
— Разберётесь, когда использовать Selenium, Playwright или Selene.
— Запустите автотест с Pytest и без него.
И совсем немного о трендах QA:
— Зачем компаниям QA, которые умеют писать код.
— Python + автотесты как минимальный входной билет в индустрию.
— Нейросети: конкурент или ассистент?
Станислав Васенков, основатель школы — в прошлом — Head of QAA pflb.ru, автор allure-notifications, победитель хакатона от EPAM, спикер Heisenbug.
Занять место▶
Реклама. Рекламодатель: ИП Васенков Станислав Олегович, ИНН 774335827403, erid: 2Vtzqw51r9U
Вы начинающий автоматизатор или ручной тестировщик? Займите место сейчас
За несколько часов опытный инженер объяснит, как написать и запустить автотест
Что сделаете за занятие:
— Напишете свой автотест на Python с нуля.
— Настроите рабочую среду за 10 минут (и она реально будет работать).
— Разберётесь, когда использовать Selenium, Playwright или Selene.
— Запустите автотест с Pytest и без него.
И совсем немного о трендах QA:
— Зачем компаниям QA, которые умеют писать код.
— Python + автотесты как минимальный входной билет в индустрию.
— Нейросети: конкурент или ассистент?
Станислав Васенков, основатель школы — в прошлом — Head of QAA pflb.ru, автор allure-notifications, победитель хакатона от EPAM, спикер Heisenbug.
Занять место
Реклама. Рекламодатель: ИП Васенков Станислав Олегович, ИНН 774335827403, erid: 2Vtzqw51r9U
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍2💊1
Если хочешь стать скилловым бэкенд-разработчиком, то пили как можно больше проектов.
В этом курсе их три: генератор блогов, клон Netflix и клон Spotify.
Прокачаешь бэкенд на практике с Python, Django и PostgreSQL😄
👉 @PythonPortal
В этом курсе их три: генератор блогов, клон Netflix и клон Spotify.
Прокачаешь бэкенд на практике с Python, Django и PostgreSQL
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥15❤10💊3
Возможность Python, которую часто недооценивают -> операции над множествами
Вот пример, как можно удалять или обновлять теги, приводя старые и новые значения к множествам, а затем выполняя операции над множествами
Очистка и приведение к множествам:
🔸
🔸
🔸
Удаление существующих тегов:
Добавление новых тегов (без дубликатов):
👉 @PythonPortal
Вот пример, как можно удалять или обновлять теги, приводя старые и новые значения к множествам, а затем выполняя операции над множествами
Очистка и приведение к множествам:
existing = {t for tag in old_tags if (t := tag.strip())}
incoming = {t for tag in new_tags if (t := tag.strip())}
tag.strip(
) удаляет пробелы с начала и конца строки.t := tag.strip()
сохраняет очищенное значение в переменную t.if (t := tag.strip())
фильтрует пустые строки ("").Удаление существующих тегов:
updated = existing - incoming
print("Removed tags:", updated)
Добавление новых тегов (без дубликатов):
updated = existing | incoming
print("Added tags:", updated)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20👍6❤4🤯3👀1
Если хочешь вкатиться в ML, а не просто читать теорию, начинай с практики прямо в браузере.
В этом курсе всё: туториалы, Colab-ноутбуки и реальные примеры.
Будешь тренировать модели на Python с TensorFlow, визуализировать в TensorBoard и деплоить хоть в браузер, хоть на сервер.
Подходит и для новичков, и для тех, кто уже пробовал Keras или NumPy😊
👉 @PythonPortal
В этом курсе всё: туториалы, Colab-ноутбуки и реальные примеры.
Будешь тренировать модели на Python с TensorFlow, визуализировать в TensorBoard и деплоить хоть в браузер, хоть на сервер.
Подходит и для новичков, и для тех, кто уже пробовал Keras или NumPy
Please open Telegram to view this post
VIEW IN TELEGRAM
❤20👍7🔥3💊1
Конструкции в Python, использующие блок
🔸 Условный оператор
🔸 Цикл
🔸 Цикл
🔸 Блок
На фото мы видим 4 примера:
1. проверяет условие. Если
2. Цикл ищет
> Блок else выполняется только если цикл не прерван через
3. Цикл отрабатывает до конца,
>
4. Пытается выполнить 10 / 2. Исключения нет — срабатывает
>
👉 @PythonPortal
else
:if-else
for-else
while-else
try-except-else
На фото мы видим 4 примера:
1. проверяет условие. Если
x < 5
— выполняется if
, иначе — else
2. Цикл ищет
i == 10
. Не находит, break не срабатывает → выполняется else
> Блок else выполняется только если цикл не прерван через
break
3. Цикл отрабатывает до конца,
else
выполняется после завершения while
>
else
не выполнится, если внутри цикла будет break
4. Пытается выполнить 10 / 2. Исключения нет — срабатывает
else
>
else
выполняется только если не было исключений в try
Please open Telegram to view this post
VIEW IN TELEGRAM
❤39👍13🔥6🏆1
This media is not supported in your browser
VIEW IN TELEGRAM
Наткнулся на библиотеку art — делает ASCII-арт из текста за секунды.
Простая установка:
Пример использования:
Идеально для приветственных страничек или добавить декоративный вывод в CLI или логах😊
👉 @PythonPortal
Простая установка:
pip install art
Пример использования:
from art import text2art
Art = text2art("art") # шрифт по умолчанию
print(Art)
# Пример вывода:
# _
# __ _ _ __ | |_
# / _` || '__|| __|
# | (_| || | | |_
# \__,_||_| \__|
Art_block = text2art("art", font='block', chr_ignore=True)
print(Art_block)
# Выведет крупный блок‑текст
Идеально для приветственных страничек или добавить декоративный вывод в CLI или логах
Please open Telegram to view this post
VIEW IN TELEGRAM
❤52👍16🔥11😁3
Аналогично Unix-пайпам, в Python можно строить цепочки функций, переопределяя метод
Это позволяет связывать операции так, что вывод одной функции становится входом для следующей → чисто, читаемо и удобно для композиции
Именно так LangChain реализует элегантные пайплайны вроде:
Пример:
🔸
🔸
🔸
Теперь можно обернуть любые функции в Pipe и комбинировать их в цепочку:
👉 @PythonPortal
__or__
Это позволяет связывать операции так, что вывод одной функции становится входом для следующей → чисто, читаемо и удобно для композиции
Именно так LangChain реализует элегантные пайплайны вроде:
chat_prompt | groq_model | output_parser
Пример:
class Pipe:
def __init__(self, func):
self.func = func
def __call__(self, x):
return self.func(x)
def __or__(self, other):
return self.__class__(lambda x: other(self(x)))
Pipe
— обёртка над функцией__or__
(|) позволяет комбинировать пайпами, как в Unix__call__
делает объект вызываемым, как обычную функциюТеперь можно обернуть любые функции в Pipe и комбинировать их в цепочку:
double = Pipe(lambda x: x * 2)
square = Pipe(lambda x: x ** 2)
pipeline = double | square
print(pipeline(3)) # (3 * 2) ** 2 = 36
Please open Telegram to view this post
VIEW IN TELEGRAM
👍30❤15🏆4🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Буквально за считанные минуты собери умного чат-бота для своего сайта
Firecrawl только что выкатили Firestarter — полноценную платформу для чат-ботов, которая:
🔸 Скрейлит твой сайт
🔸 Индексирует контент
🔸 Разворачивает чат-интерфейс с поддержкой RAG и API в стиле OpenAI
Полностью open-source - ccылка
Попробуйте: ссылка
👉 @PythonPortal
Firecrawl только что выкатили Firestarter — полноценную платформу для чат-ботов, которая:
Полностью open-source - ccылка
Попробуйте: ссылка
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥4🤝3❤1💊1
Совет по Pytest:
Используйте пользовательские маркеры
Это упрощает организацию и запуск определённых групп тестов
В примере на изображении используются два пользовательских маркера:
🔹
– Применён к тесту для замера производительности
🔹
– Применён к тестам для работы с базой данных
Мы можем запускать выборочно, например тесты, помеченные маркером
👉 @PythonPortal
Используйте пользовательские маркеры
pytest
, чтобы добавлять метаданные к тестам.Это упрощает организацию и запуск определённых групп тестов
В примере на изображении используются два пользовательских маркера:
@pytest.mark.performance
– Применён к тесту для замера производительности
test_page_load_time
@pytest.mark.database
– Применён к тестам для работы с базой данных
test_database_connection
и test_data_integrity
Мы можем запускать выборочно, например тесты, помеченные маркером
@pytest.mark.database
pytest -m database
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤7🔥7🏆1
This media is not supported in your browser
VIEW IN TELEGRAM
Я только сегодня узнал об этом трюке с GitHub
Просто введите
Такой простой способ сэкономить время🤯
👉 @PythonPortal
Просто введите
repo.new
в адресной строке браузера — и сразу откроется страница создания нового репозитория на GitHub.Такой простой способ сэкономить время
Please open Telegram to view this post
VIEW IN TELEGRAM
👍43❤12🤔5🏆2
Совет по Python:
Знаете ли вы, что можно задать максимальную длину списка, используя deque из модуля collections?
Класс
В приведённом примере📖
👉 @PythonPortal
deque.maxlen
Знаете ли вы, что можно задать максимальную длину списка, используя deque из модуля collections?
Класс
deque
(двусторонняя очередь) из модуля collections поддерживает параметр maxlen
, который устанавливает максимальный размер очереди. Когда очередь достигает этого размера, добавление новых элементов автоматически удаляет элементы с противоположного конца, реализуя поведение "первым пришёл — первым ушёл" (FIFO) с ограничением по размеру.В приведённом примере
deque
имеет максимальную длину 3. При добавлении значения 4 удаляется 1, что делает такую структуру идеальной для реализации скользящего окна последних трёх элементов Please open Telegram to view this post
VIEW IN TELEGRAM
❤35👍22🤯8🏆1
Numpy CheatSheet.pdf
9 MB
Это шпаргалка по библиотеке NumPy
Краткое руководство по основным операциям и функциям для работы с массивами в Python.😄
👉 @PythonPortal
Краткое руководство по основным операциям и функциям для работы с массивами в Python.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26❤11🏆3
This media is not supported in your browser
VIEW IN TELEGRAM
Это что игра What It Prints?
Да, это онлайн-игра‑головоломка для разработчиков и студентов, где нужно угадать, что выведет код. Простая и увлекательная: показывается фрагмент, а вы должны определить его вывод
Для самопроверки самое то💯
👉 @PythonPortal
Да, это онлайн-игра‑головоломка для разработчиков и студентов, где нужно угадать, что выведет код. Простая и увлекательная: показывается фрагмент, а вы должны определить его вывод
Для самопроверки самое то
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42🔥7😢5❤4
This media is not supported in your browser
VIEW IN TELEGRAM
Auto PY to EXE — это open-source инструмент для упаковки Python-проектов в исполняемые файлы, который гораздо проще в использовании, чем pyfuze
Он предоставляет наглядный графический интерфейс: просто выбираешь скрипт, настраиваешь нужные параметры и нажимаешь кнопку запуска —> весь процесс упаковки проходит без необходимости возиться с командной строкой.
Дополнительно можно сохранять часто используемые настройки, отслеживать процесс в реальном времени и просматривать подробные логи.📖
Инструмент кроссплатформенный, поддерживает Windows, macOS и Linux, а установка через pip максимально простая:
👉 @PythonPortal
Он предоставляет наглядный графический интерфейс: просто выбираешь скрипт, настраиваешь нужные параметры и нажимаешь кнопку запуска —> весь процесс упаковки проходит без необходимости возиться с командной строкой.
Дополнительно можно сохранять часто используемые настройки, отслеживать процесс в реальном времени и просматривать подробные логи.
Инструмент кроссплатформенный, поддерживает Windows, macOS и Linux, а установка через pip максимально простая:
pip install auto-py-to-exe
Please open Telegram to view this post
VIEW IN TELEGRAM
👍46🔥13❤7
Использование контекстного менеджера как таймера
Большинство разработчиков ассоциируют контекстные менеджеры (with-выражение) только с работой с файлами. Но на самом деле этот паттерн решает более общую задачу.
Контекстные менеджеры идеально подходят для управления любыми ресурсами, у которых есть чёткий момент начала и завершения. Например:
• File I/O
• Сессии логирования
• Транзакции в базе данных
• Сетевые и БД-соединения
• Замер производительности
• Управление потоками и блокировками
Вместо того чтобы вручную замерять время до и после блока кода, можно использовать контекстный менеджер — это чистое и питоничное решение.
Обычно контекстный менеджер реализуется как класс с методами
Но есть более лаконичный способ — использовать декоратор
Пример как использовать контекстный менеджер как таймер прикрепил✌️
👉 @PythonPortal
Большинство разработчиков ассоциируют контекстные менеджеры (with-выражение) только с работой с файлами. Но на самом деле этот паттерн решает более общую задачу.
Контекстные менеджеры идеально подходят для управления любыми ресурсами, у которых есть чёткий момент начала и завершения. Например:
• File I/O
• Сессии логирования
• Транзакции в базе данных
• Сетевые и БД-соединения
• Замер производительности
• Управление потоками и блокировками
with
гарантирует, что инициализация и очистка ресурса будут выполнены автоматически, даже если в блоке возникнет исключение. Это делает код чище и надёжнее.Вместо того чтобы вручную замерять время до и после блока кода, можно использовать контекстный менеджер — это чистое и питоничное решение.
Обычно контекстный менеджер реализуется как класс с методами
__enter__
и __exit__
Но есть более лаконичный способ — использовать декоратор
@contextmanager
из модуля contextlib, чтобы писать генераторные менеджеры без лишнего шаблонного кода.Пример как использовать контекстный менеджер как таймер прикрепил
Please open Telegram to view this post
VIEW IN TELEGRAM
👍29❤12🔥4
Топ-10 распространённых магических методов в Python
👉 @PythonPortal
__init__(self)
– Инициализация нового объекта__str__(self
) – Строковое представление__repr__(self)
– Представление для отладки__len__(self)
– Длина объекта__getitem__(self, key)
– Доступ к элементу по индексу/ключу__setitem__(self, key, value)
– Установка значения по индексу/ключу__delitem__(self, key)
– Удаление элемента по ключу__eq__(self, other)
– Проверка на равенство__add__(self, other)
– Поведение оператора сложения +
__call__(self, ...)
– Делает экземпляр вызываемым как функцияPlease open Telegram to view this post
VIEW IN TELEGRAM
🤝30❤23👍15🤣5🔥1
Совет по Python:
Функция
Встроенная функция locals() возвращает словарь, представляющий текущую локальную таблицу символов.
Таблица символов — это структура, в которой Python хранит все имена (переменные, функции, классы и т.д.), доступные в определённой области видимости.
Когда
В примере переменные
👉 @PythonPortal
Функция
locals()
Встроенная функция locals() возвращает словарь, представляющий текущую локальную таблицу символов.
Таблица символов — это структура, в которой Python хранит все имена (переменные, функции, классы и т.д.), доступные в определённой области видимости.
Когда
locals()
вызывается внутри функции, она возвращает словарь со всеми локальными переменными, определёнными в рамках этой функции.В примере переменные
z
и x
определены локально внутри функции. Переменная y = 20
является глобальной и не относится к области видимости my_func(). Поэтому locals() внутри my_func
не включает y
Please open Telegram to view this post
VIEW IN TELEGRAM
👍52❤15🔥3🤔3
This media is not supported in your browser
VIEW IN TELEGRAM
Наткнулся на прикольный ресурс для изучения SQL
Это интерактивный тренажёр, который позволяет практиковаться в написании SQL-запросов прямо в браузере.
Подойдёт и новичкам, и тем, кто хочет освежить SELECT, JOIN и другие команды на практике📝
👉 @PythonPortal
Это интерактивный тренажёр, который позволяет практиковаться в написании SQL-запросов прямо в браузере.
Подойдёт и новичкам, и тем, кто хочет освежить SELECT, JOIN и другие команды на практике
Please open Telegram to view this post
VIEW IN TELEGRAM
👍47❤10
Совет по Python:
При объединении итерируемых объектов разной длины используй
Используй🤵
👉 @PythonPortal
При объединении итерируемых объектов разной длины используй
itertools.zip_longest()
вместо zip()
, чтобы все элементы были объединены в пары.zip()
объединяет элементы, пока один из итерируемых не закончится:>>> list(zip(letters, numbers))
[('a', 1), ('b', 2)]
zip_longest()
продолжает объединение до конца самого длинного итерируемого объекта:>>> list(zip_longest(letters, numbers))
[('a', 1), ('b', 2), ('c', None)]
fillvalue
позволяет указать значение-заполнитель для отсутствующих элементов:>>> list(zip_longest(letters, numbers, fillvalue='N/A'))
[('a', 1), ('b', 2), ('c', 'N/A')]
Используй
zip_longest
, когда важно сохранить все данные, даже при разной длине итерируемых объектов Please open Telegram to view this post
VIEW IN TELEGRAM
🔥40❤16👍9🏆5
This media is not supported in your browser
VIEW IN TELEGRAM
Хочешь понять, как работает Git — напиши свой.
Линус Торвальдс прославился тем, что написал Git за один день на C, уложившись в 1000 строк — и закоммитил его через Git. Сейчас проект насчитывает >500k строк, но его ядро можно реализовать за одни выходные.
Write Yourself a Git – пошаговое руководство, помогающее создать упрощённую версию Git на Python. Автор показывает, как за ~978 строк кода реализовать ключевые команды Git:
Git кажется сложным, но его ядро на удивление простое. Проект wyag позволяет «разобрать его на атомы» и понять фундаментальные концепции через код😡
👉 @PythonPortal
Линус Торвальдс прославился тем, что написал Git за один день на C, уложившись в 1000 строк — и закоммитил его через Git. Сейчас проект насчитывает >500k строк, но его ядро можно реализовать за одни выходные.
Write Yourself a Git – пошаговое руководство, помогающее создать упрощённую версию Git на Python. Автор показывает, как за ~978 строк кода реализовать ключевые команды Git:
init, add, commit, log, checkout, status
и другие — при этом всё остаётся совместимым с настоящим GitGit кажется сложным, но его ядро на удивление простое. Проект wyag позволяет «разобрать его на атомы» и понять фундаментальные концепции через код
Please open Telegram to view this post
VIEW IN TELEGRAM
❤51👍18🔥10