代码之家  ›  专栏  ›  技术社区  ›  nskalis

如何从tmpdir\u工厂读取文件

  •  1
  • nskalis  · 技术社区  · 8 年前

    给定一个fixture,它在temp目录中创建一个文件,如下所示:

    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 回复  |  直到 8 年前
        1
  •  1
  •   SilentGuy    7 年前

    如果要在初始化后使用tempdir,请从fixture返回路径:

    #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"