用于长时间运行功能的Python单元测试

问题描述 投票:-1回答:1

我有一个长期运行的python方法,这个函数将进入文件夹内并读取所有文件并提取文本。输出数量不会是常数,因为它可以改变。此过程可能需要几个小时到几天。如何为这样的函数编写单元测试,如何检查其通过或失败,因为输出的数量可能会改变,需要花费很多时间

python unit-testing
1个回答
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')
        ...
© www.soinside.com 2019 - 2024. All rights reserved.