Хороший способ получить местоположение файла, когда местоположение сценария python, ищущего файл, может измениться? - PullRequest
0 голосов
/ 05 марта 2012

У меня есть папка «pyMS», которая содержит скрипты с документами. Также в pyMS есть папка «test», в которой есть и модульные тесты, и папка «testfiles», которая содержит файлы с данными, которые я использую для тестирования.

pyMS/
├── __init__.py
├── baseFunctions.py
└── test
    ├── __init__.py
    ├── test_baseFunctions.py
    └── testfiles
        └── testfile.txt

Я хочу использовать unittest для запуска doctest с

suite.addTest(doctest.DocTestSuite("baseFunctions") 

Однако при попытке использовать файлы в doctest у меня возникает проблема.

Это будет работать при выполнении doctest из командной строки (python baseFunctions -v):

testfile = open('test/testfiles/testfile.txt')

но при запуске из unittest он выдает IOError, потому что test_baseFunctions.py находится в папке test, поэтому правильное расположение файла - /testfiles/testfile.txt вместо test / testfiles / testfile.txt.

Мое очень уродливое решение сейчас -

import os
testfile = open(os.abspath('').split('pyMS')[0]+'pyMS'+os.sep+'test'+os.sep+'testfiles'+os.sep+'testfile.txt'

Что было бы лучшим способом справиться с этим?

1 Ответ

1 голос
/ 05 марта 2012

Вы можете стандартизировать, выполнив os.chdir() в соответствующем месте.Для выполнения тестов я не могу придумать ни одной причины, чтобы этого не делать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...