Чтобы протестировать библиотеку, установленную через pip в виртуальном окружении, можно использовать несколько подходов, в зависимости от сложности тестирования и интеграции с вашей текущей системой разработки. Основная идея заключается в изолированном запуске тестов, чтобы избежать конфликтов с другими пакетами и версиями.
Общая схема действий:
python -m venv .venv (или python3 -m venv .venv в зависимости от вашей системы).pip и python выполнялись в контексте этого окружения. Команда для активации:
source .venv/bin/activate.venv\Scripts\activatepip. Например: pip install your_library. Также, необходимо установить все необходимые зависимости для тестирования, такие как pytest, unittest, tox и т.д. pip install pytest, например.tests/).pytest. pytest автоматически обнаружит и запустит все файлы, имена которых начинаются с test_ или заканчиваются на _test.py.unittest, необходимо написать скрипт, который обнаруживает и запускает тесты. Пример:
import unittest
if __name__ == '__main__':
unittest.main()
tox или nox. Эти инструменты позволяют создавать несколько виртуальных окружений с разными версиями Python и зависимостей, и запускать тесты в каждом из них. Пример конфигурации tox.ini:
[tox]
envlist = py39, py310
[testenv]
deps =
pytest
your_library
commands =
pytest
Запуск: toxПример использования pytest:
Предположим, у вас есть библиотека mylib с функцией add, и вы хотите ее протестировать:
Файл mylib/mylib.py:
def add(a, b):
return a + b
Файл tests/test_mylib.py:
from mylib import mylib
def test_add():
assert mylib.add(2, 3) == 5
assert mylib.add(-1, 1) == 0
assert mylib.add(0, 0) == 0
После установки mylib и pytest в виртуальном окружении, запустите pytest в корневом каталоге проекта. pytest обнаружит и запустит тесты, и вы увидите результат.
В заключение: Тестирование в виртуальном окружении - это важная практика для обеспечения качества кода, предотвращения конфликтов зависимостей и воспроизводимости тестов. Использование автоматизации и CI/CD позволяет сделать этот процесс более эффективным и надежным.