在Python中,如何从文件中加载用于单元测试的数据?

How to load data from a file, for a unit test, in python?

我已经编写了一个专门的HTML解析器,我想用我下载的几个示例网页进行单元测试。

在爪哇中,我使用类资源,将数据加载到单元测试中,而不必依赖于文件系统上的特定路径。在python中有什么方法可以做到这一点吗?

我找到doctest.testfile()函数,但它似乎是特定于doctests的。我只想得到一个文件句柄,一个特定的HTML文件,它是相对于当前模块的。

提前感谢您的建议!


要从UnitTest中的文件加载数据,如果测试数据与UnitTests在同一目录下,则有一种解决方案:

1
2
3
4
5
6
7
8
9
10
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):
       ....

您还可以使用stringio或cstringio模拟将文件内容作为文件包含的字符串。


我猜你的任务归根结底就是为了得到当前的文件。然后通过指向HTML文件的路径扩展该路径并将其打开。


这是基于费伦的回答,但它会在MyTest.tearDown()期间关闭文件,以避免出现"resourcewarning:unclosed file"(资源警告:未关闭文件):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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):
       ....