1

パンダを使用して相対パスから 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 に「プロジェクト テストを実行する」ように依頼すると、「dat/file.csv」が存在しないという不平を言う IOError が発生します。に変更すると機能するため、相対パスであるという事実に関連してい/home/user/.../thing1/dat/file.csvます。相対パスを維持しながら単体テストを機能させる方法はありますか?

4

1 に答える 1

1

私も同じ問題を抱えてる。相対パスで os.path.abspath() を呼び出すと、絶対パスが間違っていることがわかります。私が見つけた唯一の回避策は、__file__ を使用してテスト ファイル パスへの相対パスを絶対パスに変更し、1 レベル上に移動してファイル名を除外することでした。

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