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