Source: Модульные тесты

← Rendered

markdown source:

---
description: Модульное тестирование
tags: tests
title: Модульные тесты
---
В модульных тестах следует избегатьвзаимодействия с внешними системами по следующим причинам:

- взаимодействия могут иметь нежелательные побочные эффекты, в виде отправки писем, сообщений, внесения данных в дб и т.д.
- нет контроля над внешними службами, что влияет на надежность тестирования
- взаимодействия меняют состояние среды выполнения, что может привести к результатам, которые нельзя воспроизвести
- снижается скорость выполнения тестирования
- внешним службам часто требуются учетки и доступы, что усложняет Тестирование

Решение:

- отделить логику от внешних зависимостей
- использовать [[тесты-с-имитацией]] или #mock объекты

То-же самое, что и [[изолированные-тесты]]

- [[pytest]]
- [[pytest-asyncio]]
- [[unittest]]


[тесты-с-имитацией]: %D1%82%D0%B5%D1%81%D1%82%D1%8B-%D1%81-%D0%B8%D0%BC%D0%B8%D1%82%D0%B0%D1%86%D0%B8%D0%B5%D0%B9 "Тесты с имитацией"
[изолированные-тесты]: %D0%B8%D0%B7%D0%BE%D0%BB%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5-%D1%82%D0%B5%D1%81%D1%82%D1%8B "Изолированные тесты"
[pytest]: pytest "Pytest"
[pytest-asyncio]: pytest-asyncio "Pytest-asyncio"
[unittest]: unittest "Unittest"


[тесты-с-имитацией]: тесты-с-имитацией "Тесты с имитацией"
[изолированные-тесты]: изолированные-тесты "Изолированные тесты"
[pytest]: pytest "Pytest"
[pytest-asyncio]: pytest-asyncio "Pytest-asyncio"
[unittest]: unittest "Unittest"