LINUX.ORG.RU

История изменений

Исправление Kilte, (текущая версия) :

Решение в лоб: в __init__.py пакета с тестами создать этот объект, а потом импортировать его в нужном месте. Но как уже сказали, в юнит тестах так делать не принято.

У меня была задача запилить тесты на селениуме, где нужно иметь доступ к экземпляру драйвера и ещё куче объектов в каждом тесте. Сначала пришлось сделать примерно так же. Потом перешёл на pytest, куда прикрутил самописный плагин, который решает эту проблему. Потом мне что-то не понравилось и я запилил свою пускалку тестов.

Решение проблемы заключается в том, что есть модуль, назовём его context.py. В этом модуле определён контекстный менеджер, внутри которого проходят все тесты. Перед запуском набора тестов (TestSuite), атрибуты экземпляра этого контекстного менеджера становятся доступны внутри экземпляра набора тестов.

Почему контекстный менеджер, а не простой словарь/объект? Потому что независимо от результата нужно вырубить браузер, остановить сервер, в котором крутится приложение и т.п. Как-то так. Можно конечно было сделать и через try finally, но так красивее. Впрочем, это всё детали.

Так или иначе, придётся выдумывать что-то своё, ИМХО. Я не думаю, что есть какие-то готовые решения. Можно посмотреть, как тестируют в джанге, может быть там что-то интересное будет.

Исходная версия Kilte, :

Решение в лоб: в __init__.py пакета с тестами создать этот объект, а потом импортировать его в нужном месте. Но как уже сказали, в юнит тестах так делать не принято.

У меня была задача запилить тесты на селениуме, где нужно иметь доступ к экземпляру драйвера и ещё куче объектов в каждом тесте. Сачала пришлось сделать примерно так же. Потом перешёл на pytest, куда прикрутил самописный плагин, который решает эту проблему. Потом мне что-то не понравилось и я запилил свою пускалку тестов.

Решение проблемы заключается в том, что есть модуль, назовём его context.py. В этом модуле определён контекстный менеджер, внутри которого проходят все тесты. Перед запуском набора тестов (TestSuite), атрибуты экземпляра этого контекстного менеджера становятся доступны внутри экземпляра набора тестов.

Почему контекстный менеджер, а не простой словарь/объект? Потому что независимо от результата нужно вырубить браузер, остановить сервер, в котором крутится приложение и т.п. Как-то так. Можно конечно было сделать и через try finally, но так красивее. Впрочем, это всё детали.

Так или иначе, придётся выдумывать что-то своё, ИМХО. Я не думаю, что есть какие-то готовые решения. Можно посмотреть, как тестируют в джанге, может быть там что-то интересное будет.