Как загрузить данные из файла, для unit test, в python?
Я написал специализированный синтаксический анализатор HTML, который я хочу unit test с двумя примерами загруженных веб-страниц.
В Java я использовал ресурсы класса, чтобы загружать данные в модульные тесты, не полагаясь на то, что они находятся на определенном пути в файловой системе. Есть ли способ сделать это в Python?
Я нашел функцию doctest.testfile(), но это, похоже, специфично для доктрин. Я хотел бы просто получить дескриптор файла в конкретный файл HTML, который относится к текущему модулю.
Заранее благодарим за любые предложения!
Ответы
Ответ 1
Чтобы загрузить данные из файла в unittest, если testdata находится в том же каталоге, что и unittests, одно решение:
TESTDATA_FILENAME = os.path.join(os.path.dirname(__file__), 'testdata.html')
class MyTest(unittest.TestCase)
def setUp(self):
self.testdata = open(TESTDATA_FILENAME).read()
def test_something(self):
....
Ответ 2
Я думаю, ваша задача сводится к тому, что дано здесь, чтобы получить текущий файл. Затем расширьте этот путь по пути к вашему HTML файлу и open it.
Ответ 3
Вы также можете использовать StringIO или cStringIO для имитации строки, содержащей ваше содержимое файла, в виде файла.
Ответ 4
Это основано на ответе Феррана, но оно закрывает файл во время MyTest.tearDown()
чтобы избежать "ResourceWarning: unclosed file":
TESTDATA_FILENAME = os.path.join(os.path.dirname(__file__), 'testdata.html')
class MyTest(unittest.TestCase)
def setUp(self):
self.testfile = open(TESTDATA_FILENAME)
self.testdata = self.testfile.read()
def tearDown(self):
self.testfile.close()
def test_something(self):
....