Skip to main content
在为你的 LangGraph 代理完成原型设计后,自然的下一步是添加测试。本指南涵盖了一些在编写单元测试时可以使用的有用模式。 请注意,本指南是针对 LangGraph 的,涵盖了具有自定义结构的图相关场景——如果你是初学者,请查看使用 LangChain 内置的 create_agent测试 文档。

前提条件

首先,确保你已安装 pytest

入门

由于许多 LangGraph 代理依赖于状态,一个有用的模式是在每次使用图的测试之前创建你的图,然后在测试中使用新的检查点实例对其进行编译。 下面的示例展示了一个简单的线性图如何工作,该图依次经过 node1node2。每个节点更新单个状态键 my_key

测试单个节点和边

编译后的 LangGraph 代理通过 graph.nodes 暴露对每个单独节点的引用。你可以利用这一点来测试代理中的单个节点。请注意,这将绕过编译图时传递的任何检查点:

部分执行

对于由更大图组成的代理,你可能希望测试代理内的部分执行路径,而不是端到端的整个流程。在某些情况下,将这些部分重构为子图在语义上可能是合理的,你可以像正常情况一样单独调用它们。 但是,如果你不希望更改代理图的整体结构,可以使用 LangGraph 的持久化机制来模拟代理在所需部分开始之前暂停的状态,并在所需部分结束时再次暂停。步骤如下:
  1. 使用检查点编译你的代理(内存中的检查点 InMemorySaver 对于测试来说就足够了)。
  2. 使用 as_node 参数调用你的代理的 update_state 方法,该参数设置为你想要开始测试的节点之前的节点名称。
  3. 使用你用于更新状态的相同 thread_id 调用你的代理,并将 interrupt_after 参数设置为你想要停止的节点名称。
以下是一个仅在线性图中执行第二个和第三个节点的示例: