Светильник is_udp не найден (хотя он был объявлен несколькими строками раньше) - PullRequest
0 голосов
/ 11 июня 2019

Это мой код (фикстуры для conftest):

@pytest.fixture
def is_udp(request):
    yield request.config.getoption('--target') == 'udp'

.
.
.

@pytest.fixture(autouse=True)
def foo(request, is_udp):
    if not is_udp:
        return True

Моя ошибка такова:

E       fixture 'is_udp' not found
available fixtures: __pytest_repeat_step_number, allocator_files, bu_test_max_iters, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, cov, debug_target, doctest_namespace, estimator_files, foo, max_batches, memory_analyze, metadata, monke
ypatch, no_cover, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory
>       use 'pytest --fixtures [testpath]' for help on them.

Является ли autouse=True причиной несоответствия в отчетах, которые видит Pytest?

После удаления этого устройства из foo (у меня есть другой способ получить необходимую информацию), я получаю ту же ошибку в другом устройстве, которое также пытается использовать is_udp.После удаления этого я получаю ту же ошибку для другого прибора.Оба прибора определены, и у них нет других объектов, которые могут их затенять.

1 Ответ

0 голосов
/ 11 июня 2019

Проблема была в плохом импорте (у меня фактически было 2 файла, и хотя все приборы были в одном и том же файле, они фактически были вызваны из другого файла, который знал только их часть)

Это действительно произошло:

File A:
fixture foo
fixture goo(foo) (autouse=True)
*Makes me think goo should know foo as they are in the same file*

File B:
from ... import goo
# no import for foo
# using goo because it is autouse and failing because it doesn't know foo

Исправлено добавлением импорта для foo в Файл B

...