README.md 4.5 KB

🧪 Tests Directory

Test suite for the Hyperliquid Manual Trading Bot

📋 Available Tests

🔧 Core Tests

  • test_config.py - Validates configuration and environment setup
  • test_balance.py - Tests balance fetching with CCXT integration

💰 Trading Tests

  • test_perps_commands.py - Tests perps trading logic (/long, /short)
  • test_exit_command.py - Tests position closing functionality (/exit)
  • test_order_management.py - Tests enhanced order management (/orders, /coo)
  • test_risk_management.py - Tests stop loss and take profit commands (/sl, /tp)
  • test_order_monitoring.py - Tests automatic order monitoring and notifications

🚀 Running Tests

Run All Tests

cd tests
python run_all_tests.py

Run Individual Tests

cd tests
python test_config.py           # Test configuration
python test_balance.py          # Test balance fetching
python test_perps_commands.py   # Test trading commands
python test_exit_command.py     # Test exit functionality
python test_order_management.py # Test order management
python test_risk_management.py  # Test risk management

Run from Project Root

python tests/run_all_tests.py   # All tests
python tests/test_config.py     # Individual test

📊 Test Structure

Each test file follows the same pattern:

#!/usr/bin/env python3
"""
Test description
"""

import sys
from pathlib import Path

# Add project paths
project_root = Path(__file__).parent.parent
sys.path.insert(0, str(project_root))
sys.path.insert(0, str(project_root / 'src'))

# Import modules to test
from hyperliquid_client import HyperliquidClient
from config import Config

def test_function_name():
    """Main test function."""
    # Test implementation
    return True  # or False

if __name__ == "__main__":
    success = test_function_name()
    sys.exit(0 if success else 1)

✅ Test Coverage

Configuration & Setup

  • ✅ Environment variable validation
  • ✅ CCXT configuration format
  • ✅ Network settings (testnet/mainnet)
  • ✅ API key validation

Hyperliquid Client

  • ✅ Client initialization
  • ✅ Balance fetching (CCXT format)
  • ✅ Position fetching
  • ✅ Order fetching
  • ✅ Market data retrieval

Trading Commands

  • ✅ Long/short command logic
  • ✅ Market vs limit order detection
  • ✅ Token amount calculations
  • ✅ Symbol format conversion
  • ✅ Price validation

Order Management

  • ✅ Order filtering by token
  • ✅ Bulk order cancellation logic
  • ✅ Token extraction and validation

Position Management

  • ✅ Position detection
  • ✅ Exit order logic
  • ✅ Direction determination (long/short)

Risk Management

  • ✅ Stop loss validation (price direction)
  • ✅ Take profit validation (price direction)
  • ✅ Position requirement checking
  • ✅ P&L calculation at SL/TP levels

Order Monitoring

  • ✅ Order fill detection logic
  • ✅ Position change tracking
  • ✅ P&L calculation accuracy
  • ✅ Notification triggering
  • ✅ 30-second monitoring cycle

🔍 What Tests Check

Integration Tests

  • Real API connectivity (testnet)
  • Data format validation
  • Error handling
  • Network timeouts

Logic Tests

  • Command parsing
  • Calculation accuracy
  • Symbol conversions
  • Filter operations

Safety Tests

  • Configuration validation
  • API key security
  • Network isolation (testnet)

📝 Test Output

Each test provides:

  • ✅ PASS/❌ FAIL status
  • Detailed progress with emojis
  • Error messages with stack traces
  • Configuration summary
  • Ready-to-use commands for testing

Example output:

🧪 Testing Configuration Setup
==================================================
✅ Configuration valid
🌐 Network: Testnet
🔑 Private Key: 0x1234567890...

🎉 Config test PASSED!

🚀 Adding New Tests

  1. Create test file: test_new_feature.py
  2. Follow naming convention: test_<feature_name>.py
  3. Use standard structure (see above)
  4. Add to this README
  5. Test runner will auto-discover it

🛡️ Test Safety

  • All tests use testnet by default
  • No real money at risk
  • Read-only operations (except explicitly noted)
  • API key masking in outputs
  • Network isolation validation

📱 Mobile Testing

After tests pass, verify on Telegram:

# Start bot
python src/telegram_bot.py

# Test commands
/start
/balance
/long BTC 10
/sl BTC 9000
/tp BTC 11000
/orders
/coo BTC

Happy testing! 🧪🚀