Mock in tests
#python #mock #tests #pytest #unittest
В статье объясняется что такое “мок”, зачем они нужны
Приведены множество примеров как использовать “моки”
Так приведено сравнение 2х библиотек для “моков”
mock
monkeypatch
#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/2FGCVPm7 code editing tips
#python #pycharm #pycon
Отличны доклад от Jetbrains
Андрей Власовских рассказал, как ускорить и упростить свою работу в PyCharm
Показал несколько полезных shortcut 👍
Я для себя открыл парочку новых 😁
link 👉https://youtu.be/FW3_OPBxk2s
#python #pycharm #pycon
Отличны доклад от Jetbrains
Андрей Власовских рассказал, как ускорить и упростить свою работу в PyCharm
Показал несколько полезных shortcut 👍
Я для себя открыл парочку новых 😁
link 👉https://youtu.be/FW3_OPBxk2s
Soft assert
#tests #pytest
Очень часто в тестах нужно сделать несколько проверок
Это конечно противоречит понятию “Один тест, одна проверка”
Но это в идеальном мире, а не в нашем 😁
example:
В такой реализации есть одна проблема
При срабатывании первого
И если там тоже есть проблемы, то мы о них узнаем когда пофиксят первую
Решением может быть реализация кастомных
example:
link 👉https://bit.ly/2MnM9kR
#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_checkexample:
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 есть “замечательные флаги” для запуска таких тестов:
-
-
example:
Но в таком случаее нужно все равно сидеть запускать тесты в ручную,
пока звезды не сойдуться и flaky test не упадет,
а можно написать свой тест генератор 😁
conftest.py
И будет Вам “счастье” 😇
link 👉 https://bit.ly/2S8POID
#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 20link 👉 https://bit.ly/2S8POID
Linting …
#python #lint
Холиварный рассказ про линтеры 😍
Зачем они нам нужны и как их применять на проекте
Лично мое мнение, линтер
Какие бывают линтеры:
- Pylint
- Flake8
- SonarQube
- MyPy
👉link: https://bit.ly/2EbFRkC
👉video: https://youtu.be/7IVCOzL41Lk
#python #lint
Холиварный рассказ про линтеры 😍
Зачем они нам нужны и как их применять на проекте
Лично мое мнение, линтер
must have на проекте, в разы упрошает код ревьюКакие бывают линтеры:
- Pylint
- Flake8
- SonarQube
- MyPy
👉link: https://bit.ly/2EbFRkC
👉video: https://youtu.be/7IVCOzL41Lk
Pytest + Selenium
#pytest #selenium
Небольшой туториал - pytest в связке с selenium
- Приведены примеры создания фикстур драверов
- Пример реализации кросбраузерного тестирования, с помошью одной фикстуры и 2х браузеров
- Также показано как создавать
Статья будет полезна для новичков или для тех кто только начал смотреть в строну pytest или selenium 👌
👉 link: https://bit.ly/2ExhLCr
#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
В статье описаны примеры
- Создание Generic-типов
- Объявление анотаций Callable
- Как помочь статическому анализатору с помощью Cast
- А так же как узнать об анотациях в интерпретаторе
👉link: https://bit.ly/2GYQpYf
👉link part 1: https://bit.ly/2C3yEmy
6 пунктов, которые помогут легко разобраться с regexp
#python #regexp
🙈В тестировании частенько бываю случаии
🙉для проверки чего либо нужно применять
🙊Настало время его изучить!!!
Для этого есть небольшое руководство
которое поможет разобраться с “регулярками” в 6 этапов,
а обилие примеров позволит закрепить материал ❤️
👉link: https://bit.ly/2C5ddkO
#python #regexp
🙈В тестировании частенько бываю случаии
🙉для проверки чего либо нужно применять
regexp 🙊Настало время его изучить!!!
Для этого есть небольшое руководство
которое поможет разобраться с “регулярками” в 6 этапов,
а обилие примеров позволит закрепить материал ❤️
👉link: https://bit.ly/2C5ddkO
Heisenbug 2018 Moscow
🔥 Весна пришла!
🎉 Появились в открытом доступе записи докладов
😎 Как по мне, отличные планы на выходные
👉 link: https://www.youtube.com/playlist?list=PLsVTVVvrKX9t1xlDqeSHTVwhZvwvDTF7v
🔥 Весна пришла!
🎉 Появились в открытом доступе записи докладов
😎 Как по мне, отличные планы на выходные
👉 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
#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
-
-
-
-
👉 link: https://bit.ly/2U95tJ9
#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 #mock
Статья полезна для понимания как работают mock’и в Python
Множество примеров помогут в этом не легком деле
Рассматриваются такие вопросы:
- что это такое
- где приминяется
- как это провернуть
👉link: https://bit.ly/2Ugq5Qx
Инструменты для создания виртуального окружения в Python
#python #env
Для создания виртуального окружения в Python существует множество инструментов.
Какой из них лучше выбрать?
В статье рассмотрены несколько вариантов, а также их преимущества и недостатки.
Рассматрены такие инструменты:
- virtualenv
- pew
- venv
- pipenv
👉 link: http://bit.ly/2v7Q9yi
#python #env
Для создания виртуального окружения в Python существует множество инструментов.
Какой из них лучше выбрать?
В статье рассмотрены несколько вариантов, а также их преимущества и недостатки.
Рассматрены такие инструменты:
- virtualenv
- pew
- venv
- pipenv
👉 link: http://bit.ly/2v7Q9yi
Making your Python decorators even better
#python
Статья о том как создавать правильные декораторы 😉
используя для этого модуль
👉 link: http://bit.ly/2V8Diq6
#python
Статья о том как создавать правильные декораторы 😉
используя для этого модуль
functool и декоратор @wraps👉 link: http://bit.ly/2V8Diq6
Объяснение алгоритмов сортировки
#python #sort #algorithms
В статье рассмотрены популярные алгоритмы сортировки,
принципы их работы и реализация.
Так же приведено сравнение, как быстро они сортируют элементы в списке.
Алгоритмы:
- Пузырьковая сортировка
- Сортировка выборкой
- Сортировка вставками
- Пирамидальная сортировка
- Сортировка слиянием
- Быстрая сортировка
👉 link: http://bit.ly/2H83v4r
#python #sort #algorithms
В статье рассмотрены популярные алгоритмы сортировки,
принципы их работы и реализация.
Так же приведено сравнение, как быстро они сортируют элементы в списке.
Алгоритмы:
- Пузырьковая сортировка
- Сортировка выборкой
- Сортировка вставками
- Пирамидальная сортировка
- Сортировка слиянием
- Быстрая сортировка
👉 link: http://bit.ly/2H83v4r
Pathlib Is Wonderful!
#python
Модуль os.path, всегда был тем,
что мы использовали когда речь заходила про пути в Python.
В принципе, там есть всё, что вам нужно,
но часто выглядит это не слишком изящно.
Example with os.path:
Example with pathlib:
👉http://bit.ly/2YXWXvg
#python
Модуль os.path, всегда был тем,
что мы использовали когда речь заходила про пути в Python.
В принципе, там есть всё, что вам нужно,
но часто выглядит это не слишком изящно.
Example with os.path:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
TEMPLATES_DIR = os.path.join(BASE_DIR, 'templates')
Example with pathlib:
BASE_DIR = Path(__file__).resolve().parent.parent
TEMPLATES_DIR = BASE_DIR.joinpath('templates')
👉http://bit.ly/2YXWXvg
Встроенные функции Python
#python
В статье рассказуется про стандартные встроенные функции Python
какие используются часто и на какие не стоит тратить время.
👉http://bit.ly/2WBa7kj
#python
В статье рассказуется про стандартные встроенные функции Python
какие используются часто и на какие не стоит тратить время.
👉http://bit.ly/2WBa7kj
CodeFest 2019
#video #codefest
Появились в открытом доступе
14 докладов о тестировани с codefest
👉 http://bit.ly/2JZlM6v
#video #codefest
Появились в открытом доступе
14 докладов о тестировани с codefest
👉 http://bit.ly/2JZlM6v
Finding Android components with Appium
#tests #appium
В статье на примере калькулятора
показано как можно находить нужный елемент в Android app
и что для этого можно использовать
👉 http://bit.ly/2LaUCtW
#tests #appium
В статье на примере калькулятора
показано как можно находить нужный елемент в Android app
и что для этого можно использовать
👉 http://bit.ly/2LaUCtW
Сравнение BDD фреймворков Python: плюсы и минусы
#tests #bdd #framework
В статье автор попытался разобраться
какие существуют BDD фреймворками на Python
определил их плюсы и минусы и какой из них лучше
BDD фреймворки:
- behave
- pytest-bdd
- radish
- lettuce
- freshen
👉 http://bit.ly/2YUU6na
#tests #bdd #framework
В статье автор попытался разобраться
какие существуют BDD фреймворками на Python
определил их плюсы и минусы и какой из них лучше
BDD фреймворки:
- behave
- pytest-bdd
- radish
- lettuce
- freshen
👉 http://bit.ly/2YUU6na