我有一个正在 Eclipse 中处理的 Python 项目,并且有以下文件结构:
/Project
/projectname
module1.py
module2.py
# etc.
/test
testModule1.py
# etc.
testdata.csv
在我的一项测试中,我创建了一个类的实例,给出'testdata.csv'
作为参数。这个对象确实open('testdata.csv')
并读取内容。
如果我只运行这个单个测试文件unittest
一切正常,文件已找到并正确读取。但是,如果我尝试运行所有单元测试(即通过右键单击test
目录而不是单个测试文件),我收到错误消息,无法找到文件。
有什么办法可以解决这个问题(除了提供绝对路径,我不想这样做)?
通常我所做的是定义
THIS_DIR = os.path.dirname(os.path.abspath(__file__))
在每个测试模块的顶部。那么,您所在的工作目录并不重要 - 文件路径相对于测试模块所在的位置始终相同。
然后我在我的测试(或测试设置)中使用类似的东西:
my_data_path = os.path.join(THIS_DIR, os.pardir, 'data_folder/data.csv')
或者在您的情况下,由于数据源位于测试目录中:
my_data_path = os.path.join(THIS_DIR, 'testdata.csv')
编辑:对于现代Python
from pathlib import Path
THIS_DIR = Path(__file__).parent
my_data_path = THIS_DIR.parent / 'data_folder/data.csv'
# or if it's in the same directory
my_data_path = THIS_DIR / 'testdata.csv'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)