Исходя из идеи использования __file__
, возможно, вы могли бы использовать модуль, чтобы помочь с построением пути. Вы можете найти все файлы, содержащиеся в каталоге модуля, собрать их имя и путь в словаре для дальнейшего использования.
Создайте модуль, доступный для ваших тестов, то есть каталог помимо вашего теста, такой как testData, где вы можете поместить свои файлы данных. В __init__.py
этого модуля введите следующий код.
import os
from os.path import join,dirname,abspath
testDataFiles = dict()
baseDir = dirname(abspath(__file__)) + os.path.sep
for root, dirs, files in os.walk(baseDir):
localDataFiles = [(join(root.replace(baseDir,""),name), join(root,name)) for name in files]
testDataFiles.update( dict(localDataFiles))
Предполагая, что вы назвали свой модуль testData
и он содержит файл с именем data.txt
, вы можете использовать следующую конструкцию в своем тесте для получения пути к файлу. aFileOperation
предполагается как функция, которая принимает путь к параметру
import unittest
from testData import testDataFiles
class ATestCase(unittest.TestCase):
def test_Something(self):
self.assertEqual( 0, aFileOperation(testDataFiles['data.txt'] )
Это также позволит вам использовать подкаталоги, такие как
def test_SomethingInASubDir(self):
self.assertEqual( 0, aFileOperation(testDataFiles['subdir\\data.txt'] )