我有一个长期运行的python方法,这个函数将进入文件夹内并读取所有文件并提取文本。输出数量不会是常数,因为它可以改变。此过程可能需要几个小时到几天。如何为这样的函数编写单元测试,如何检查其通过或失败,因为输出的数量可能会改变,需要花费很多时间
这种问题可以通过使用测试资源来解决。当您需要在文件数据上测试函数时,这是一个经典问题。
在你的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')
...