如何在Python中为单元测试从文件加载数据?
我写了一个专门的HTML解析器,现在想用我下载的一些网页来进行单元测试。
在Java中,我使用类资源来加载数据到单元测试中,这样就不需要依赖文件系统中特定的路径。那么在Python中有没有类似的方法呢?
我找到了一些关于doctest.testfile()的内容,但这似乎只适用于doctest。我想要的是获取一个特定HTML文件的文件句柄,这个文件是相对于当前模块的。
提前感谢任何建议!
4 个回答
2
你还可以使用 StringIO 或 cStringIO 来模拟一个字符串,就像这个字符串是你文件内容的一个文件一样。
24
这段内容是基于Ferran的回答,但它在MyTest.tearDown()
这个步骤中关闭了文件,以避免出现'资源警告:文件未关闭'的问题:
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):
....
88
如果你想在单元测试中从文件加载数据,并且测试数据和单元测试文件在同一个目录下,有一个解决办法:
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):
....