跳转到主要内容

测试

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

在 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,它访问一个 API 服务,该服务将两个数字相乘并加上 80

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}
API 参考:ToolsUnitTests

要了解更多信息,请查看我们关于如何向集成添加标准测试的指南。


此页是否对您有帮助?