标准测试可确保您的集成按预期工作。 无论是为自己创建自定义类,还是在 LangChain 集成中发布,添加测试以确保其按预期工作是必要的。LangChain 为每种集成类型提供了一套全面的测试集。本指南将向您展示如何为每种集成类型添加 LangChain 的标准测试套件。

设置

首先,安装所需的依赖项:

langchain-core

定义了我们想要导入以定义自定义组件的接口

langchain-tests

提供运行标准测试所需的测试和 pytest 插件
由于新版本的 langchain-tests 中新增的测试可能会破坏您的 CI/CD 流水线,我们建议固定到 langchain-tests 的最新版本,以避免意外更改。
langchain-tests 包中有 2 个命名空间:
位置: langchain_tests.unit_tests旨在隔离地测试组件,不访问外部服务查看 API 参考
位置: langchain_tests.integration_tests旨在测试组件时可以访问外部服务(特别是该组件设计用于交互的外部服务)查看 API 参考
这两种类型的测试都是以基于 pytest 类的测试套件形式实现的。

实现标准测试

根据您的集成类型,您可能需要实现单元测试、集成测试或两者。 通过为您的集成类型继承标准测试套件,您将获得该类型的全套标准测试。要使测试运行成功,一个给定的测试应该仅在模型支持正在测试的功能时才通过。否则,该测试应被跳过。 由于不同的集成提供不同的功能集,LangChain 提供的大多数标准测试默认是选择加入的,以防止误报。因此,您需要覆盖属性以指示您的集成支持哪些功能 - 请参阅下面的示例以了解说明。
tests/integration_tests/test_standard.py
您应该将测试组织在相对于包根目录的以下子目录中:
  • tests/unit_tests 用于单元测试
  • tests/integration_tests 用于集成测试
要查看可配置功能及其默认值的完整列表,请访问标准测试的 API 参考。 以下是来自流行集成的标准测试示例实现:

ChatOpenAI

单元测试

ChatAnthropic

单元测试

ChatGenAI

单元测试

沙盒集成

Deep Agents 沙盒集成使用 langchain_tests.integration_tests 中的 SandboxIntegrationTests。 对其进行子类化,并提供一个生成 SandboxBackendProtocol 实例的 sandbox fixture。 请参考 Daytona 集成测试 作为参考实现。 有关发布指南,请参阅贡献沙盒集成。

运行测试

如果从模板引导集成,会提供一个包含运行单元和集成测试目标的 Makefile:
否则,如果您遵循推荐的目录结构,可以使用以下命令运行测试:

故障排除

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