Automation with python
1.42K subscribers
1 photo
144 links
Канал агрегатор, все самое интересно об автоматизации на Python

https://www.facebook.com/AutomationWithPython/
Download Telegram
Web Scraper with Selenium
#selenium #tests #pytest

Статья о том, как еще можно использовать Selenium 😎
Автор на простом примере подробно рассказал,
как парсить страницы веб приложения с помощью Selenium

👉 https://bit.ly/3mVKnJR
Как писать «правильные» циклы на Python
#python

В статье рассматриваются несколько подходов
позволяющих писать чистый код 😎
даже для самых сложных циклов на Python
🤔

PS: itertools❤️

👉 https://bit.ly/2EtTH65
Каверзные вопросы по Python
#python

Статья-разбор каверзных вопросов по Python
с которыми вы можете столкнуться как в работе,
так и в ходе прохождения собеседования
🍓

a, b = 0, 1
c = a and b
c ???
🤔

👉 https://bit.ly/2KfK7WZ
Selenium wait_page_loaded doesn't work
#tests #selenium

Очень старая статья от Алексея Баранцева
в которой он объяснил, что означает
“ожидание окончание загрузки страницы”
и почему оно не всегда помогает в тестах

👉 https://bit.ly/394xLeM
Running Selenium tests in GitHub Actions
#pytest #selenium

Подробный гайд по настройке GitHub Actions
для запуска Selenium тестов с pytest
а также настройки интеграции с TestProject
все любят красивые репорты
😍

👉 https://bit.ly/39z3BRa
Selenium 4 With Python: All You Need To Know
#tests #selenium

Разбираемся какие же новые фичи нам принес
релиз
Selenium==4.0.0a7

👉 https://bit.ly/3fYQFVZ
👍1
How to get data from pytest-xdist nodes
#pytest #tests

Статья-разбор как работает pytest-xdist.
Добавляем поддержку
pytest-xdist для своего плагина.
Который замеряет потребление
RAM тестом
и выводит в консоль TOP5
😳

👉 https://bit.ly/3a7IghP
Mimesis - Fake Data Generator
#tests

Mimesis - это генератор поддельных данных для Python,
который предоставляет данные для различных целей.
По сути очень похож на Faker
- можно писать кастомные провайдеры
- есть провайдеры для различных стран и языков
Но у
Mimesis есть еще генерация по схеме,
что можно использовать для мока API сервисов
+ есть плагин
pytest-mimesis

👉 https://bit.ly/3gQhABW
Элегантное ООП на Python
#python #tests #api

Краткий гайд по библиотеке marshmallow
Предназначенной для сериализации/десериализации объектов
плюс на борту имеется валидация с удобными и понятными ошибками,
что можно успешно использовать в тестировании
API
описывая простые схемы ожидаемых ответов

class UserSchema(Schema):
name = fields.Str()
email = fields.Email()

errors = UserSchema().validate({"name": "Ronnie", "email": "invalid-email"})
print(errors) # {'email': ['Not a valid email address.']}

👉 http://bit.ly/39j1E9z
👍2
Profiling and improving the runtime of a large test suite
#tests #pytest

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

👉 https://bit.ly/2HpAVxY
👍1
Disabling the Internet for pytest
#pytest #tests

pytest-socket must have for unit tests 🤟

Отличное решение для ускорения тестов
т/к поможет найти неожиданные места,
где забыли про
mock и тратится драгоценное время
на ожидание ответа

👉 https://bit.ly/2GH6mTV
👍1
Python testing style guide
#python #pytest #tests

Каталог "best practices" по написанию тестов
собранный автором на основе личного опыта

PS: это не свод правил, а больше как пища для размышлений

👉 http://bit.ly/3f3k0zO
Playwright with Pytest
#tests #pytest

Playwright уже давно не новинка в JS автоматизации.
Я как то писал, о том что его портировали на Python.
Но как с ним обстоят дела? И тут наткнулся на видео,
в котором автор рассказывает о фичах
и показывает как на нем просто писать тесты 🤪

👉 https://bit.ly/3b4n5wX
👍1
Unit tests generation
#tests

Появилось спасение для разработчиков
которые не любят писать юнит тесты
Pynguin - тул командной строки
который помогает автоматически генерировать простые юнит тесты

попробовал натравить на
def foo(x: int, y: int) -> int:
return x / y

как результат сгенерировал один тест
def test_case_0():
var0 = 1453
var1 = module0.foo(var0, var0)
assert var1 == pytest.approx(1.0, abs=0.01, rel=0.01)

PS: Качество конечно страдает и есть нюансы
- не работает для объктов без объявленых типов
- нужет python >= 3,8
- с негативными кейсами проблемка, их нет
- поддерживать такие тесты ад еще тот
- не поддерживает pytest.parametrize
зато бесплатно
и зеленые 🤣

👉 https://bit.ly/2T7MI9X
👍2
Проверка уязвимостей в коде
#tests #security

В отлично время живем 👌
pylint | flake8 - помогаю найти баги до запуска кода
black - решает за меня как мой код должен выглядеть
isort - в каком порядке импортировать модули
pynguin - пишет тесты

А что на счет безопастности?
Bandit - поможет найти общие проблемы безопасности

Натравил на свое приложение, работает достаточно быстро
но над безопасностью нужно еще поработать 😅
Code scanned:
Total lines of code: 74289
Total issues (by confidence):
Undefined: 0.0
Low: 0.0
Medium: 9
High: 138.0

PS: только из-за название нужно попробовать 🤟

👉 https://bit.ly/3wqDX9G
👍4
Finding the root cause of hung Python test
#tests #pytest #debug

В статье попытался описать как можно
найти первопричину зависания теста 😍
На примере простой функции c
time.sleep и pytest

👉 https://bit.ly/3oUJDbh
👍2
Fight with `Flaky` tests or another side of using pytest-xdist
#pytest #tests #debug #pytest-xdist

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

👉 https://bit.ly/31pgds1
👍3