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

https://www.facebook.com/AutomationWithPython/
Download Telegram
API & UI testing on Gitlab CI
#tests #pytest #selenium #docker #allure #gitlab

Подробный гайд по настройке Gitlab CI с 0
для тестирования API и UI.
С запуском selenium тестов в Docker
с помощью pytest и генерировать отчеты в Allure
🍰

👉 https://bit.ly/2Pm5cOP
👍2
Линтер на все случаи жизни — GitHub Super Linter
#code #linters

Команда DevOps инженеров из GitHub
поделились своим универсальным решением
для проверки качества кода. С ним можно настроить линтер
для 17 языков всего в 11 строк
🥳

👉 https://bit.ly/2DEdD5G
Изучаем mutmut
#tests

mutmut — инструмент для мутационного тестирования
который позволяет выявить баги, не покрыты тестами.
Даже если Ваш coverage 100%
😅

👉 https://bit.ly/39CZr8Q
Non Blocking Assertion Failures
#tests #pytest

Довольно часто в одном тесте нужно сделать несколько проверок.
Но pytest из коробки не предоставляет такую возможность.
Тест остановится на первом неудачном
assert,
результат последующих вы не узнаете.
Многие решают эту проблему путем создания своих собственных
soft_asserts, но решение уже есть pytest-check 🔥

👉 https://bit.ly/3jIlej4
Pytest Plugins to Love ❤️
#pytest #tests

Крутая подборка плагинов для pytest 🤟
Я для себя тоже открыл парочку 😎
Нужно срочно затянуть их в проект
🏃‍♂️

👉 https://bit.ly/2QKxd39
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