集成测试需要真实的 API 凭证。从环境变量加载它们,以确保密钥不会进入源代码控制。使用 conftest.py fixture 来验证所需密钥是否可用:
import osimport pytest@pytest.fixture(autouse=True)def check_api_keys(): if not os.environ.get("OPENAI_API_KEY"): pytest.skip("OPENAI_API_KEY not set")
def test_agent_calls_weather_tool(): agent = create_agent("claude-sonnet-4-6", tools=[get_weather]) result = agent.invoke({ "messages": [HumanMessage(content="What's the weather in SF?")] }) messages = result["messages"] tool_calls = [ tc for msg in messages if hasattr(msg, "tool_calls") for tc in (msg.tool_calls or []) ] assert any(tc["name"] == "get_weather" for tc in tool_calls) assert isinstance(messages[-1], AIMessage) assert len(messages[-1].content) > 0
@pytest.mark.vcr()def test_agent_trajectory(): agent = create_agent("claude-sonnet-4-6", tools=[get_weather]) result = agent.invoke({ "messages": [HumanMessage(content="What's the weather in SF?")] }) assert any( tc["name"] == "get_weather" for msg in result["messages"] if hasattr(msg, "tool_calls") for tc in (msg.tool_calls or []) )