Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中,如何从文件中加载数据(用于单元测试)?_Python_Unit Testing_File Io - Fatal编程技术网

在python中,如何从文件中加载数据(用于单元测试)?

在python中,如何从文件中加载数据(用于单元测试)?,python,unit-testing,file-io,Python,Unit Testing,File Io,我已经编写了一个专门的HTML解析器,我想用我下载的两个示例网页对其进行单元测试 在Java中,我使用类资源将数据加载到单元测试中,而不必依赖它们位于文件系统上的特定路径。在Python中有没有实现这一点的方法 我找到了这个函数,但它似乎是特定于doctest的。我只想获得一个特定HTML文件的文件句柄,它与当前模块相关 提前感谢您的建议 我想你的任务可以归结为获取当前文件的任务。然后将该路径扩展到HTML文件及其所在的路径。您也可以使用StringIO或cStringIO将包含文件内容的字符串

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

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

我找到了这个函数,但它似乎是特定于doctest的。我只想获得一个特定HTML文件的文件句柄,它与当前模块相关


提前感谢您的建议

我想你的任务可以归结为获取当前文件的任务。然后将该路径扩展到HTML文件及其所在的路径。

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

要从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):
       ....

这是基于Ferran的回答,但它会在
MyTest.tearDown()过程中关闭文件,以避免“ResourceWarning:未关闭的文件”:

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):
       ....

是的,我想到了这一点,但这需要我将所有HTML作为字符串放入python文件中,我不喜欢它,因为它的长度大于3k。为了便于查看,最好用您的添加内容编辑Ferran的答案。使用“new”python,此命令变为:
TEST\u file=pathlib.Path(\uu file\uuu).parent.joinpath(“testdata.HTML”)
然后
测试文件.open()
。记住导入pathlib
,请注意@LeilaHC回答中的建议,即再次正确关闭测试文件,例如在拆卸方法中。是
setuptools
附带的工具。如果安装了一个软件包,即使只安装了
pip install-e
/setup.py develope
,那么
pkg\u资源
只需知道
\uu名称
就可以找到资源文件。