2015-06-02 2 views
0

Мой вопрос касается нескольких пользовательских плагинов в pytest. У меня есть два (или более) плагина pytest, которые я создал, которые установлены с помощью setuptools и точки входа pytest11, каждый плагин имеет свой собственный setup.py. Кажется, что только первый установленный плагин активен. Я проверил это с помощью операторов печати в hook pistest_configure. Если первый установленный плагин удаляется, то, по-видимому, вызывается только второй скрипт настройки для второго плагина. Кроме того, такое же поведение наблюдается с крюком addoption, параметры для второго установленного плагина не распознаются.
Я полностью смущен, потому что я использовал сторонние плагины, и они, похоже, работают нормально. Не являются ли крючки для всех установленных плагинов, которые должны быть вызваны? Может быть, это проблема с установкой плагинов, то есть с помощью setuptools? (используется команда python setup.py -v install). Pip правильно показывает все модули плагинов, как установлено.несколько пользовательских плагинов в py.test

Edit: Названия разные, ниже файлы установки:

from setuptools import setup 
setup(
    name="pytest_suite", 
    version="0.1", 
    packages=['suite_util'], 
    # the following makes a plugin available to pytest 
    entry_points={ 
     'pytest11': [ 
      'name_of_plugin = suite_util.conftest', 
     ] 
    }, 
) 

и

from setuptools import setup 
setup(
    name="pytest_auto_framework", 
    version="0.1", 
    packages=['automation_framework'], 
    # the following makes a plugin available to pytest 
    entry_points={ 
     'pytest11': [ 
     'name_of_plugin = automation_framework.conftest', 
    ] 
    }, 
) 
+0

Можете ли вы опубликовать два файла setup.py? Вы используете разные имена плагинов для каждого? –

+0

, указав pytest_plugins в файле conftest.py в тестовом каталоге, кажется, делает трюк (pytest doc указывает, что плагины, установленные в pytest_plugins, загружаются, когда загружается скидка). однако, это требование? не должны ли все установленные плагины быть активными? pytest_plugins = "automation_framework.conftest", "suite_util.conftest" – gangof4

+0

Это те фактические файлы настроек, которые вы используете? Оба имеют одинаковое имя плагина: 'name_of_plugin'. В противном случае вы можете опубликовать воспроизводимый пример? –

ответ

0

Если ваши точки входа pytest оба имеют такое же имя (как они делают в вашем примере выше), only the first one will be loaded by pytest.

Обратите внимание, что this is not an inherent limitation of pkg_resources entry points, но из-за того, что плагины в них зарегистрированы в pytest. Там может быть только один плагин с тем же именем - что имеет смысл imho.

Смежные вопросы