как прочитать файл из tmpdir_factory - PullRequest
0 голосов
/ 20 сентября 2018

При наличии прибора, который создает файл во временном каталоге, например:

conftest.py

@pytest.fixture(scope="session")
def manifest(tmpdir_factory):
    db_dir = tmpdir_factory.mktemp("artifact")
    db_fn = db_dir.join("xxx.db")
    db = os.path.join(db_fn.dirname, db_fn.basename)

Можно ли открыть и только для чтения рассматриваемый файлвнутри тестового файла?

Следующее не работает:

test_iface.py

def targets_to_try(tmpdir_factory):
    tmpdir_factory.getbasetemp().join("artifact/xxx.db")

Поскольку pytest переименовывает временный каталог как artifact0, 0означает выполнение теста.

Не могли бы вы дать совет по решению?

1 Ответ

0 голосов
/ 19 октября 2018

Если вы хотите использовать tempdir после инициализации, верните путь из фикстура:

#conftest.py

@pytest.fixture(scope="session")
def manifest(tmpdir_factory):
    db_dir = tmpdir_factory.mktemp("artifact")
    db_fn = db_dir.join("xxx.db")
    db = os.path.join(db_fn.dirname, db_fn.basename)
    return db

#test_iface.py

def targets_to_try(manifest):
    assert manifest.basename() == "xxx.db"

Базовый каталог tmpdir будет менять имя при каждом запуске теста.Если вы хотите избежать изменения имени каталога, вы не должны использовать tmpdir.Используйте обычный каталог.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...