首页 > 解决方案 > 我应该如何调整类以适应 python 中的可测试性?

问题描述

我有一个类,它管理一些过程。

dataset_processor.py

class DatasetProcessor:
    def __init__(path, list_element):
        self.path = path
        self.list_element = list_element

    def do_check_dirs_under_paths():
        "gets dirs from path and checks if elements are also in list_element"

但是现在,当涉及到dataset_processor.ut.py我想在哪里进行单元测试并保持它独立时,我应该从路径中模拟目录(我应该吗?)。

    def test_1(self):
        test_1_processor = DatasetProcessor(path='M:/example', list_element=['foo', 'bar'])
        test_1_processor.do_check_dirs_under_paths()
        self.assertTrue(test_1_processor.everything_is_ok())

我在考虑:

  1. 制作另一个功能,例如。def mock(dirs=[])并在函数中使用特殊的模拟变量do_check_dirs_under_paths并检查是否self.mock_dirs. 它影响可读性,但易于实现。
  2. 为构建test_params={}参数do_check_dirs_under_paths,我将在其中放置外部数据 - 它也会影响可读性。
  3. 不知何故,os.listdir、os.isdir 和函数在测试时操纵结果——我认为这将是最好的选择。
  4. 测试时间:实际上,制作那些目录。然而,由于这种方法以后可能不起作用(对于大文件等) - 我想保持一致并确保以后不会陷入更大的架构陷阱。

@编辑

为了更广阔的视野。DatasetProcessor 是一个更大的类,它管理维护图像数据集的其他子过程。它还检查文件的可读性并以我想要的格式从图像生成 NumPy 数组。

呈现的片段是我想要在单元测试下获得的片段之一。

标签: pythonunit-testing

解决方案


推荐阅读