首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在python中从文件中加载数据,以便进行单元测试?

如何在python中从文件中加载数据,以便进行单元测试?
EN

Stack Overflow用户
提问于 2011-11-08 16:34:28
回答 4查看 34.1K关注 0票数 47

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

在Java中,我使用类资源将数据加载到单元测试中,而不必依赖于它们位于文件系统上的特定路径。有没有办法在Python中做到这一点?

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

提前感谢您的任何建议!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-11-08 19:36:29

要从unittest中的文件加载数据,如果testdata与unittest位于相同的目录中,则有一种解决方案:

代码语言:javascript
复制
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):
       ....
票数 73
EN

Stack Overflow用户

发布于 2019-01-30 23:43:58

这是基于Ferran的回答,但它在未关闭文件期间关闭文件以避免'ResourceWarning:MyTest.tearDown()‘:

代码语言:javascript
复制
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):
       ....
票数 15
EN

Stack Overflow用户

发布于 2011-11-08 18:26:53

还可以使用StringIO或cStringIO将包含文件内容的字符串模拟为文件。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8047736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档