使用外部数据文件的 Python 单元测试

2024-04-06

我有一个正在 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(使用前将#替换为@)

使用外部数据文件的 Python 单元测试 的相关文章

随机推荐