2016-08-27 71 views
1

我想爲一段代碼編寫一個單元測試,其中包括使用大熊貓從相對路徑讀取CSV文件。目錄結構:用相對熊貓文件路徑進行Python鼻子測試

./ 
./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,但是當我問蟒蛇爲了「運行項目測試」,我得到一個IOError抱怨'dat/file.csv'不存在。這與它是相對路徑的事實有關,因爲當我將它更改爲/home/user/.../thing1/dat/file.csv時,它可以工作。有沒有一種方法可以在保持相對路徑的同時使單元測試工作?

回答

0

我有同樣的問題。如果你在你的相對路徑上調用os.path.abspath(),你會發現絕對路徑是錯誤的。我發現的唯一解決方法是使用__file__將相對路徑更改爲絕對路徑,然後向上移動一級以排除文件名:

testImgPath = os.path.abspath(os.path.join(__file__, '../', 'testFiles', 'imgName.jpg'))