我有一个核心类如下:
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 运行时根据它执行脚本的位置来解析。使用绝对路径。像下面这样的东西应该有所帮助:
dir_path = os.path.dirname(pathlib.Path(__file__).resolve().parent.parent)
conf_path = os.path.join(dir_path, 'resources/dag.py')