Подтвердить что ты не робот

Как загрузить данные из файла, для unit test, в python?

Я написал специализированный синтаксический анализатор HTML, который я хочу unit test с двумя примерами загруженных веб-страниц.

В Java я использовал ресурсы класса, чтобы загружать данные в модульные тесты, не полагаясь на то, что они находятся на определенном пути в файловой системе. Есть ли способ сделать это в Python?

Я нашел функцию doctest.testfile(), но это, похоже, специфично для доктрин. Я хотел бы просто получить дескриптор файла в конкретный файл HTML, который относится к текущему модулю.

Заранее благодарим за любые предложения!

4b9b3361

Ответ 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):
       ....