跳到主要内容

测试组件

测试是 Langflow 开发流程中的关键部分。测试确保您的组件按预期运行,并且新更改不会引入回归。

Langflow 为组件提供了一套标准的测试。

测试结构

Langflow 组件测试通常位于 src/backend/tests/unit/components 目录中。

组件测试遵循一致的结构:

  • 文件命名: 所有的测试文件都应以 test_ 开头,后跟组件的名称。例如,File 组件的测试文件名为 test_file.py
  • 类结构: 测试组织在以 Test 开头并后跟组件名称的类中。例如,class TestFileComponent:
  • 继承: 所有的组件测试类都继承自 ComponentTestBase

导入和基础

以下是组件测试的基本结构:


_20
import pytest
_20
from langflow.components.data import FileComponent
_20
from tests.unit.components.component_test_base import ComponentTestBase
_20
_20
class TestFileComponent(ComponentTestBase):
_20
@pytest.fixture
_20
def component_class(self):
_20
return FileComponent
_20
_20
@pytest.fixture
_20
def default_kwargs(self):
_20
return {
_20
"path": "path/to/file.txt",
_20
}
_20
_20
@pytest.fixture
_20
def file_names_mapping(self):
_20
return [
_20
{"field": "path", "file_name": "file.txt"},
_20
]

测试逻辑

组件测试通常遵循 Arrange-Act-Assert (AAA) 模式。

1. Arrange(编排)

在此阶段,您为测试准备必要的环境和数据。这包括实例化组件、设置输入值(kwargs)以及模拟任何外部依赖项(如 API 调用)。

2. Act(执行)

这是您运行要测试的特定功能的地方。对于组件,这通常涉及调用主要方法(通常是 build_configrun_step)。

3. Assert(断言)

在此阶段,您验证执行的结果是否符合预期。

关键测试夹具 (Fixtures)

ComponentTestBase 提供了一些有用的夹具来简化测试过程:

  • component_class: 返回正在测试的组件类。
  • default_kwargs: 提供组件所需的默认参数。
  • file_names_mapping: 用于测试涉及文件上传或路径的组件。

运行测试

要运行组件测试,请使用 pytest 命令。您可以运行所有测试,也可以通过指定文件路径来运行特定的测试:


_10
pytest src/backend/tests/unit/components/test_file.py

有关测试实践和指南的更多信息,请参阅 Langflow 贡献指南

Search