У меня есть пакет (python3), который имеет совершенно другое поведение в зависимости от того, как он init()
ed (возможно, не лучший дизайн, но переписывание не является вариантом). Модуль может быть только init()
ed один раз, второй раз дает ошибку. Я хочу протестировать этот пакет (оба поведения) с помощью py.test.
Примечание: природа пакета делает оба поведения взаимоисключающими, нет никакой возможной причины когда-либо хотеть как в отдельной программе.
В моем тестовом каталоге есть серверные test_xxx.py
модули. Каждый модуль будет инициализировать пакет на нужном уровне (используя приспособления). Поскольку py.test
запускает интерпретатор python один раз, запуск всех тестовых модулей в одном запуске py.test не выполняется.
Обезглавить пакет, чтобы второй init()
не был чем-то, что я хочу сделать, поскольку есть внутреннее кэширование и т.д., что может привести к необъяснимому поведению.
- Можно ли сказать py.test запускать каждый тестовый модуль в отдельном процессе python (тем самым не влияя на inits в другом тестовом модуле).
- Есть ли способ надежно перезагрузить пакет (включая все подзависимости и т.д.)?
- Есть ли другое решение (я собираюсь импортировать, а затем не импортировать пакет в приспособление, но это кажется чрезмерным)?