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

https://www.facebook.com/AutomationWithPython/
Download Telegram
Библиотека которая поможет Вам генерировать тестовые данные
описав небольшие модели, можно просто быстро и красиво создавать нужные сущности со связами для тестов
работает с ORM:
- Django
- SqlAlchemy
- Mongo

Очень прикольный подход, если Вам он почему то не подходит, можно просто перенять идею 😉

pip install factory_boy

doc 👉 https://factoryboy.readthedocs.io/en/latest/index.html
link 👉 https://github.com/FactoryBoy/factory_boy
Модульное тестирование и Python в Mail.Ru

Статья состоит из трёх частей:
- чего добиваются с помощью модульного тестирования
- принципы, которым следуют
- как упомянутые принципы реализованы на Python

link 👉 https://bit.ly/2Lu9IYK
video 👉 https://youtu.be/npJVGhmQSU4
Аннотации типов Python
В старых версиях Python, аннотации типов писались в комментариях или docstring и это не очень прикольно выглядело, но лучше, чем ничего

def multiply(x, y):
"""
:param int x:
:param int y:
:rtype: int
"""
return x * y


Начаиная с Python3.6+ поддерживаются аннотации типов переменных, полей класса, аргументов и возвращаемых значений функций

def multiply(x: int, y: int) -> int:
return x * y

В статье приведены примеры написания и использования анотаций
описаны основные встроеные типы модуля typing
инструменты поддерживающие анотации

link 👉 https://bit.ly/2QNQyTH
Mock in tests
#python #mock #tests #pytest #unittest

В статье объясняется что такое “мок”, зачем они нужны
Приведены множество примеров как использовать “моки”
Так приведено сравнение 2х библиотек для “моков”

mock

@mock.patch('__main__.square', return_value=1)
def test_function(self, mocked_square):
self.assertEquals(square(5), 1)

monkeypatch

def test_function(monkeypatch):
monkeypatch.setattr('__main__.square', lambda x: 1)
assert square(5) == 1

link 👉https://bit.ly/2FGCVPm
7 code editing tips
#python #pycharm #pycon

Отличны доклад от Jetbrains
Андрей Власовских рассказал, как ускорить и упростить свою работу в PyCharm
Показал несколько полезных shortcut 👍
Я для себя открыл парочку новых 😁

link 👉https://youtu.be/FW3_OPBxk2s
Soft assert

#tests #pytest

Очень часто в тестах нужно сделать несколько проверок
Это конечно противоречит понятию “Один тест, одна проверка”
Но это в идеальном мире, а не в нашем 😁

example:

def test_one():
response = requests.get(my_test_url).json()
assert response[‘id’] == 1
assert response[‘success’] is True
assert response[‘name’] == ‘test name’

В такой реализации есть одна проблема
При срабатывании первого assert остальные проверки уже не будут совершаться
И если там тоже есть проблемы, то мы о них узнаем когда пофиксят первую
Решением может быть реализация кастомных soft assert или же просто использовать библиотеку (plugin) pytest_check

example:

def test_two(check):
response = requests.get(my_test_url).json()
check.equal(response[‘id’], 1)
check.is_true(response[‘success’])
check.equal(response[‘name’], ‘test name’)

link 👉https://bit.ly/2MnM9kR
Flaky test
#tests #pytest

Довольно часто в работе автоматизатора тестирования встречаются нестабильные тесты (flaky),
которые падают один раз в 10-15 запусков по “непонятным причинам”.
Как же бороться с такими тестами, по запускал в ручную, flaky_test PASSED

Блага у pytest есть “замечательные флаги” для запуска таких тестов:
- -x - остановить при первом падении
- —pdb - устанавливает брейкпоинт дебагера в месте падения

example:

pytest -k flaky_test -x --pdb

Но в таком случаее нужно все равно сидеть запускать тесты в ручную,
пока звезды не сойдуться и flaky test не упадет,
а можно написать свой тест генератор 😁

conftest.py

def pytest_addoption(parser):
parser.addoption(
"--repeat",
action="store",
default=1,
type=int,
metavar='repeat',
help='Number of times to repeat each test. Mostly for debug purposes'
)


def pytest_generate_tests(metafunc):
if metafunc.config.option.repeat > 1:
metafunc.fixturenames.append('repeat')
metafunc.parametrize('repeat', range(metafunc.config.option.repeat))


И будет Вам “счастье” 😇

pytest -k flaky_test -x --pdb --repeat 20

link 👉 https://bit.ly/2S8POID
Linting …
#python #lint

Холиварный рассказ про линтеры 😍
Зачем они нам нужны и как их применять на проекте
Лично мое мнение, линтер must have на проекте, в разы упрошает код ревью

Какие бывают линтеры:
- Pylint
- Flake8
- SonarQube
- MyPy

👉link: https://bit.ly/2EbFRkC
👉video: https://youtu.be/7IVCOzL41Lk
Pytest + Selenium
#pytest #selenium

Небольшой туториал - pytest в связке с selenium
- Приведены примеры создания фикстур драверов chrome & firefox
- Пример реализации кросбраузерного тестирования, с помошью одной фикстуры и 2х браузеров
- Также показано как создавать html репорты
Статья будет полезна для новичков или для тех кто только начал смотреть в строну pytest или selenium 👌

👉 link: https://bit.ly/2ExhLCr
Аннотации типов Python, part 2

В статье описаны примеры
- Создание Generic-типов
- Объявление анотаций Callable
- Как помочь статическому анализатору с помощью Cast
- А так же как узнать об анотациях в интерпретаторе

👉link: https://bit.ly/2GYQpYf
👉link part 1: https://bit.ly/2C3yEmy
6 пунктов, которые помогут легко разобраться с regexp
#python #regexp

🙈В тестировании частенько бываю случаии
🙉для проверки чего либо нужно применять regexp
🙊Настало время его изучить!!!

Для этого есть небольшое руководство
которое поможет разобраться с “регулярками” в 6 этапов,
а обилие примеров позволит закрепить материал ❤️

👉link: https://bit.ly/2C5ddkO
Heisenbug 2018 Moscow

🔥 Весна пришла!
🎉 Появились в открытом доступе записи докладов
😎 Как по мне, отличные планы на выходные

👉 link: https://www.youtube.com/playlist?list=PLsVTVVvrKX9t1xlDqeSHTVwhZvwvDTF7v
Трилогия, знакомство с тестированием в Python
#python #pytest #tests #unittest

В этом руководстве вы узнаете, как создать базовый тест,
выполнить его и найти все баги, до того как это сделают пользователи!

В певрой части Вы узнаете о доступных инструментах для написания
и выполнения тестов, и напишите первые простые тесты
👉link: https://bit.ly/2OhG9Ls

Во второй части познакомитесь с самыми популярными фреймворками
такими как Django и Flask научитесь писать интеграционные тесты
для приложения написаном на одном из этих фреймворков
👉link: https://bit.ly/2JqG6ht

В третей части узнаете как тестировать в разных средах,
как настроить простой CI, проверите производительность приложения
и даже посмотрите на проблемы безопасности.
👉link: https://bit.ly/2Fr4JH6
Модуль Collections в Python
#python

Collections  -  это встроенный модуль Python,
реализующий специализированные контейнеры типов данных.
В статье рассмотрены несколько структур данных,
представленных в этом модуле и являющимися альтернативой
встроенным стандартным контейнерам Python
-
namedtuple
- defaultdict
- OrderedDict
- Counter

👉 link: https://bit.ly/2U95tJ9
Monkey Patching in Python
#python #mock

Статья полезна для понимания как работают mock’и в Python
Множество примеров помогут в этом не легком деле

Рассматриваются такие вопросы:
- что это такое
- где приминяется
- как это провернуть

👉link: https://bit.ly/2Ugq5Qx
Инструменты для создания виртуального окружения в Python
#python #env

​​Для создания виртуального окружения в Python существует множество инструментов.
Какой из них лучше выбрать?
В статье рассмотрены несколько вариантов, а также их преимущества и недостатки.

Рассматрены такие инструменты:
- virtualenv
- pew
- venv
- pipenv

👉 link: http://bit.ly/2v7Q9yi
Making your Python decorators even better
#python

Статья о том как создавать правильные декораторы 😉
используя для этого модуль functool и декоратор @wraps

👉 link: http://bit.ly/2V8Diq6
Объяснение алгоритмов сортировки
#python #sort #algorithms

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

Алгоритмы:
- Пузырьковая сортировка
- Сортировка выборкой
- Сортировка вставками
- Пирамидальная сортировка
- Сортировка слиянием
- Быстрая сортировка

👉 link: http://bit.ly/2H83v4r