1

我正在尝试为一段代码编写单元测试,其中包括使用 pandas 从相对路径读取 CSV 文件。目录结构为:

./
./thing1/main.py
./thing1/test_main.py
./thing1/dat/file.csv
./otherthings/...

main.py中,我有:

def doThings:
    pandas.read_csv('dat/file.csv')

if __name__ == '__main__':
    doThings()

test_main.py,我有

class TestMain:
    def setup(self):
        doThings()

    def test_thing(self):
        pass  # there's other logic in here

如果我运行,一切正常main.py,但是当我要求 Anaconda“运行项目测试”时,我收到一个 IOError 抱怨 'dat/file.csv' 不存在。这与它是相对路径这一事实有关,因为当我将其更改为 时/home/user/.../thing1/dat/file.csv,它可以工作。有没有一种方法可以在保持相对路径的同时使单元测试工作?

4

1 回答 1

1

我也有同样的问题。如果您在相对路径上调用 os.path.abspath(),您会发现绝对路径是错误的。我发现的唯一解决方法是使用 __file__ 将相对路径更改为绝对到测试文件路径,然后向上移动一级以排除文件名:

testImgPath = os.path.abspath(os.path.join(__file__, '../', 'testFiles', 'imgName.jpg'))
于 2016-12-13T05:19:36.313 回答