Как работает глобальная переменная pytest_plugin?

#python #pytest

#python #pytest

Вопрос:

Я пытался определить множество приспособлений в одном файле, скажем redis.py (abcplgfixredis.py ) и использовать их в моих тестовых примерах (abc common test_file.py) через pytest_plugin. При этом я заметил, что тестовые примеры не могли видеть определенные мной приспособления.

Моя структура папок следующая

 abc
  |
  common
     |
      config.py    ( I have defined pytest_plugin=["plgfix.redis"]
      test_file.py
  plgfix
     |
      redis.py ( I have defined bunch of fixtures here)
      __init__.py
  

Из иллюстрации выше

 -> plgfix (folder) has my desired  file(redis.py) and __init__.py file to 
   make folder  as package.

-> In  abccommonconfig.py. I have defined pytest_plugin global variable

     pytest_plugins = ["plgfix.redis"] #assuming all fixtures in 
                                 #redis.py file , available for test cases



->  Now I have created abccommontest_file.py where I'm  using one of the 
    defined fixture in redis.py (abcplgfixredis.py) as follows.

     def test_fixtu(fix1):
          print ("Hi")
          pass


 I was getting error as  fix1 is not found
  

Примечание: Я могу импортировать конфигурационный файл и видеть содержимое как ‘пакет‘, ‘спецификацию‘, ‘pytest_plugins’ ……. (подтверждаю, что это не проблема с путем)

Комментарии:

1. Переименуйте config.py в conftest.py и переместите его в корень проекта.

2. Я переименовал файл в conftest.py и переместите в корневую папку (здесь abc /). Все еще я вижу ошибку fixture not found. В дополнение к этому я попытался переместить тестовый файл в корневую папку, хотя ошибка та же. Я также удалил весь файл .cache.

Ответ №1:

Согласно документам pytest, глобальная переменная должна быть либо a str , либо a Sequence[str] . Похоже, вы присвоили ей список.