长期运行功能的Python单元测试

时间:2019-03-17 06:18:51

标签: python unit-testing

我有一个运行时间较长的python方法,此功能将放入文件夹中并读取所有文档并提取文本。输出数量将不会变化,因为它可以更改。此过程可能需要几个小时到几天。如何为这种功能编写单元测试,如何检查其通过还是失败,因为输出数量可能会发生变化并且需要花费很多时间

1 个答案:

答案 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')
        ...