TradingAgents/tests/test_market_node.py

62 lines
1.7 KiB
Python

import os
import sys
import json
from pathlib import Path
from dotenv import load_dotenv
sys.path.append(str(Path(__file__).parent.parent))
# Load env before imports
load_dotenv()
from langchain_core.runnables import Runnable
from langchain_core.messages import AIMessage
from tradingagents.agents.analysts.market_analyst import create_market_analyst
class MockLLM(Runnable):
def bind_tools(self, tools, **kwargs):
return self
def invoke(self, input, config=None, **kwargs):
return AIMessage(content="Mock Market Analysis Report")
def test_market_analyst_node():
print("🔍 TESTING MARKET ANALYST NODE...")
# 1. Setup
mock_llm = MockLLM()
market_analyst_node = create_market_analyst(mock_llm)
# 2. Mock State
state = {
"company_of_interest": "PLTR",
"trade_date": "2026-01-11",
"messages": []
}
# 3. Execution
print(f" Executing node for {state['company_of_interest']}...")
try:
# Pass only state as fixed in previous steps
result = market_analyst_node(state)
# 4. Verification
regime = result.get("market_regime")
metrics = result.get("regime_metrics", {})
print(f"📊 RESULTING REGIME: {regime}")
print(f" METRICS: {json.dumps(metrics, indent=2)}")
if regime != "UNKNOWN" and metrics:
print("✅ PASS: Regime detected correctly!")
else:
print("❌ FAIL: Regime is UNKNOWN or metrics missing.")
except Exception as e:
print(f"❌ ERROR: {e}")
import traceback
traceback.print_exc()
if __name__ == "__main__":
test_market_analyst_node()