Skip to main content
标准测试确保您的集成按预期运行。 在为自己创建自定义类或准备发布 LangChain 集成时,需要添加测试以确保其正常工作。LangChain 为每种集成类型提供了完整的测试套件。本指南将展示如何将 LangChain 的标准测试套件添加到每种集成类型中。

设置

首先,安装所需的依赖项:
由于新版本 langchain-tests 中添加的测试可能会破坏您的 CI/CD 流水线,我们建议将版本固定到最新版本的 langchain-tests,以避免意外更改。
pip install -U langchain-core
pip install -U langchain-tests
langchain-tests 包中有 2 个命名空间:
位置langchain_tests.unit_tests设计用于在不访问外部服务的情况下隔离测试组件查看 API 参考
位置langchain_tests.integration_tests设计用于在可访问外部服务的情况下测试组件(特别是该组件设计要交互的外部服务)查看 API 参考
两种类型的测试都以 pytest 基于类的测试套件形式实现。

实现标准测试

根据您的集成类型,您需要实现单元测试和/或集成测试。 通过继承适合您集成类型的标准测试套件,您将获得该类型的完整标准测试集合。测试运行成功的条件是:如果模型支持被测功能,则对应测试应通过;否则,该测试应被跳过。 由于不同集成提供了独特的功能集,LangChain 提供的大多数标准测试默认都是可选启用的,以防止误报。因此,您需要覆盖属性来表明您的集成支持哪些功能——请参阅下面的示例进行说明。
tests/integration_tests/test_standard.py
# 表示聊天模型支持图像输入

class TestChatParrotLinkStandard(ChatModelIntegrationTests):
    # ... 其他必需属性

    @property
    def supports_image_inputs(self) -> bool:
        return True  # (默认值为 False)
您应按照以下相对于包根目录的子目录组织测试:
  • tests/unit_tests 用于单元测试
  • tests/integration_tests 用于集成测试
要查看所有可配置功能及其默认值的完整列表,请访问标准测试的 API 参考 以下是一些来自流行集成的标准测试实现示例:

沙盒集成

Deep Agents 沙盒集成使用来自 langchain_tests.integration_testsSandboxIntegrationTests。 继承它并提供一个生成 SandboxBackendProtocol 实例的 sandbox fixture。 以 Daytona 集成测试作为参考实现。 有关发布指南,请参阅贡献沙盒集成

运行测试

如果从模板引导集成,则会提供一个包含运行单元测试和集成测试目标的 Makefile
make test
make integration_test
否则,如果您遵循推荐的目录结构,可以使用以下命令运行测试:
# 运行所有测试
uv run --group test pytest tests/unit_tests/
uv run --group test --group test_integration pytest -n auto tests/integration_tests/

# 对于某些单元测试,您可能需要设置特定标志和环境变量:
TIKTOKEN_CACHE_DIR=tiktoken_cache uv run --group test pytest --disable-socket --allow-unix-socket tests/unit_tests/

# 运行特定测试文件
uv run --group test pytest tests/integration_tests/test_chat_models.py

# 运行文件中的特定测试函数
uv run --group test pytest tests/integration_tests/test_chat_models.py::test_chat_completions

# 运行类中的特定测试函数
uv run --group test pytest tests/integration_tests/test_chat_models.py::TestChatParrotLinkIntegration::test_chat_completions

故障排除

有关所有可用标准测试套件的完整列表,以及包含哪些测试和如何排除常见问题的信息,请参阅标准测试 API 参考