Python 单元测试给出文件未找到异常

问题描述 投票:0回答:1

我有一个核心类如下:

class GenerateDag(object):

    def __int__(self):
        pass

    def generate_dag(self, manifest: dict):
        """
        :return: bytes of the file passed
        """
        with open('../../resources/dag.py', 'rb') as f:
            return f.read()

测试用例

def test_generate_dag(self):
        manifest = Mock()
        result = GenerateDag().generate_dag(manifest)
        expected = b"some-byte-content"
        assert result == expected   

项目结构如下:

当我创建一个像这样的实例时

GenerateDag().generate_dag({})
它给了我预期的文件的正确内容但是,但是当我运行测试用例时它给了我以下错误:

FileNotFoundError: [Errno 2] No such file or directory: '/Users/../IdeaProjects/some-projct/provisioner/.tox/py38/lib/python3.8/resources/dag.py'

我还在核心类中尝试了以下逻辑:

dir_path = os.path.dirname(pathlib.Path(__file__).parent.parent)
conf_path = os.path.join(dir_path, 'resources/dag.py')

但即使这样也无济于事。那么我在这里还缺少什么?我通过

tox

运行测试
python python-3.x python-unittest
1个回答
2
投票

您看到的错误是由于您在脚本中使用了相对路径,Python 运行时根据它执行脚本的位置来解析。使用绝对路径。像下面这样的东西应该有所帮助:

dir_path = os.path.dirname(pathlib.Path(__file__).resolve().parent.parent)
conf_path = os.path.join(dir_path, 'resources/dag.py')
© www.soinside.com 2019 - 2024. All rights reserved.