Skip to main content
Open on GitHub

测试

测试是开发过程中至关重要的一部分,它确保您的代码按预期工作并满足所需的质量标准。

在 LangChain 生态系统中,我们主要有两种类型的测试:单元测试集成测试

对于实现了标准 LangChain 抽象的集成,我们提供了一套标准测试(包括单元测试和集成测试),用于维护不同组件之间的兼容性,并确保高使用率组件的可靠性。

单元测试

定义: 单元测试旨在验证代码中最小的部分——单个函数或方法——确保它们在隔离状态下按预期工作。它们不依赖外部系统或集成。

示例: 测试 convert_langchain_aimessage_to_dict 函数以确认其能正确将 AI 消息转换为字典格式:

from langchain_core.messages import AIMessage, ToolCall, convert_to_openai_messages

def test_convert_to_openai_messages():
ai_message = AIMessage(
content="Let me call that tool for you!",
tool_calls=[
ToolCall(name='parrot_multiply_tool', id='1', args={'a': 2, 'b': 3}),
]
)

result = convert_to_openai_messages(ai_message)

expected = {
"role": "assistant",
"tool_calls": [
{
"type": "function",
"id": "1",
"function": {
"name": "parrot_multiply_tool",
"arguments": '{"a": 2, "b": 3}',
},
}
],
"content": "Let me call that tool for you!",
}
assert result == expected # Ensure conversion matches expected output

集成测试

定义: 集成测试用于验证多个组件或系统是否按预期协同工作。对于依赖外部服务的工具或集成,这些测试通常确保端到端的功能正常。

示例: 测试 ParrotMultiplyTool,访问一个可执行“两数相乘后加80”的API服务:

def test_integration_with_service():
tool = ParrotMultiplyTool()
result = tool.invoke({"a": 2, "b": 3})
assert result == 86

标准测试

定义: 标准测试是由 LangChain 提供的预定义测试,旨在确保所有工具和集成的一致性和可靠性。它们包括专为 LangChain 组件设计的单元测试和集成测试模板。

示例: 继承 LangChain 的 ToolsUnitTestsToolsIntegrationTests 以自动运行标准测试:

from langchain_tests.unit_tests import ToolsUnitTests

class TestParrotMultiplyToolUnit(ToolsUnitTests):
@property
def tool_constructor(self):
return ParrotMultiplyTool

def tool_invoke_params_example(self):
return {"a": 2, "b": 3}

要了解更多信息,请查看我们的指南:如何将标准测试添加到集成中