测试
测试是开发过程中的关键部分,确保您的代码按预期工作并达到所需的质量标准。
在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的ToolsUnitTests
或ToolsIntegrationTests
以自动运行标准测试:
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 Reference:ToolsUnitTests
要了解更多信息,请查看我们的指南如何为集成添加标准测试。