Тестирование вклада entry_point

Я пишу модуль Python, в котором указан набор точек входа, чтобы другие модули хоста могли обнаружить новую часть функциональности. Я следую подходу setuptools, указанному в официальной документации.

В качестве примера приведенный ниже фрагмент кода показывает вклад через sample.contribution с именем hello-world, который указывает на атрибут timmins.hello_world.

[options.entry_points]
sample.contribution =
    hello-world = timmins:hello_world

Предположим, что подключаемый модуль хоста определяет метод, подобный следующему, для загрузки расширений sample.contributions.

def load_contributions():
   ...

Что я хочу сделать, так это написать тест, который гарантирует, что entry_point правильно загружен хост-модулем. На данный момент единственный способ протестировать такую ​​загрузку entry_point — построить колесо и установить его с помощью pip. После установки entry_point может быть успешно загружен.

Итак, мой вопрос: есть ли способ добавить указанные entry_points в setup.py (или setup.cfg), чтобы их можно было загрузить во время выполнения тестов? То есть тест для модуля, определяющего entry_point, который возвращает взносы при вызове метода load_contributions.


person josandres    schedule 22.01.2021    source источник
comment
Не уверен, что стоит это тестировать. Если бы это был я, я бы предположил, что он уже протестирован в setuptools. -- Это наводит меня на мысль, что, возможно, стоит взглянуть на собственную кодовую базу и набор тестов setuptools, чтобы увидеть, как они тестируют такие вещи, и черпать из этого вдохновение.   -  person sinoroc    schedule 23.01.2021
comment
Не интересно проверить, правильно ли плагин реализует определяемую хостом точку расширения? Я думаю, что стоит протестировать его, прежде чем переходить к производственной среде и не загружать плагин.   -  person josandres    schedule 25.01.2021
comment
А, кажется, я неправильно понял вопрос. Да, вы можете использовать tox, поскольку он всегда правильно устанавливает проект перед запуском команд (набор тестов). Таким образом, при правильной установке точки входа также должны быть доступны.   -  person sinoroc    schedule 25.01.2021
comment
@josandres, у меня тоже такая же проблема. Вы нашли свое решение?   -  person Ashok Rayal    schedule 25.06.2021
comment
@AshokRayal идите, используя tox. Вы можете определить собственный testenv, в котором могут быть установлены как хост-библиотека, так и плагины расширения. По крайней мере у меня работает :D   -  person josandres    schedule 29.06.2021


Ответы (1)


Возможно, правильным выбором будет использование tox для выполнения набора тестовых команд. Этот подход устанавливает разработанный модуль в виртуальную среду, и поэтому его entry_points загружаются при вызове команды.

person josandres    schedule 25.01.2021