我有一个运行时间较长的python方法,此功能将放入文件夹中并读取所有文档并提取文本。输出数量将不会变化,因为它可以更改。此过程可能需要几个小时到几天。如何为这种功能编写单元测试,如何检查其通过还是失败,因为输出数量可能会发生变化并且需要花费很多时间
答案 0 :(得分:1)
这种问题可以通过使用测试资源来解决。当您需要对文件数据测试功能时,这是一个经典问题。
在您的tests
目录中(不是吗?),您可以创建一个resources
包。
您需要做的就是将测试数据放在这里。当然,请选择最小的树结构:测试所需的唯一必要文件和目录。
要访问您的resources
目录,我建议使用RESOURCES_DIR
变量定义,如下所示:
在您的__init__.py
文件中,您可以编写:
import os
RESOURCES_DIR = os.path.dirname(__file__)
您可以在单元测试中轻松导入此变量,并使用它来访问测试文件。
这是一个更详细的示例:
tests
+-- resources
| +-- __init__.py
| \-- test_func1
| +-- scenario1
| | +-- <data for scenario1>
| \-- scenario2
| \-- <data for scenario2>
|
+-- test_func1.py
您的test_func1.py
如下所示:
import unittest
import os
from tests.resources import RESOURCES_DIR
class TestFunc1(unittest.TestCase):
def test_func1_scenario1(self):
data_dir = os.path.join(RESOURCES_DIR, 'test_func1/scenario1')
...
def test_func1_scenario2(self):
data_dir = os.path.join(RESOURCES_DIR, 'test_func1/scenario2')
...