feat: 엔트리포인트 및 로깅 설정 완료, 테스트 mock 개선
Made-with: Cursor
This commit is contained in:
18
main.py
Normal file
18
main.py
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
import asyncio
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
from src.config import Config
|
||||||
|
from src.bot import TradingBot
|
||||||
|
from src.logger_setup import setup_logger
|
||||||
|
|
||||||
|
load_dotenv()
|
||||||
|
|
||||||
|
|
||||||
|
async def main():
|
||||||
|
setup_logger(log_level="INFO")
|
||||||
|
config = Config()
|
||||||
|
bot = TradingBot(config)
|
||||||
|
await bot.run()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
asyncio.run(main())
|
||||||
24
src/logger_setup.py
Normal file
24
src/logger_setup.py
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
import sys
|
||||||
|
from loguru import logger
|
||||||
|
|
||||||
|
|
||||||
|
def setup_logger(log_level: str = "INFO"):
|
||||||
|
logger.remove()
|
||||||
|
logger.add(
|
||||||
|
sys.stdout,
|
||||||
|
format=(
|
||||||
|
"<green>{time:YYYY-MM-DD HH:mm:ss}</green> | "
|
||||||
|
"<level>{level: <8}</level> | "
|
||||||
|
"<cyan>{name}</cyan>:<cyan>{line}</cyan> - "
|
||||||
|
"<level>{message}</level>"
|
||||||
|
),
|
||||||
|
level=log_level,
|
||||||
|
colorize=True,
|
||||||
|
)
|
||||||
|
logger.add(
|
||||||
|
"logs/bot_{time:YYYY-MM-DD}.log",
|
||||||
|
rotation="00:00",
|
||||||
|
retention="30 days",
|
||||||
|
level="DEBUG",
|
||||||
|
encoding="utf-8",
|
||||||
|
)
|
||||||
@@ -19,17 +19,18 @@ def config():
|
|||||||
|
|
||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
async def test_set_leverage(config):
|
async def test_set_leverage(config):
|
||||||
|
with patch("src.exchange.Client") as MockClient:
|
||||||
|
mock_binance = MagicMock()
|
||||||
|
MockClient.return_value = mock_binance
|
||||||
|
mock_binance.futures_change_leverage.return_value = {"leverage": 10}
|
||||||
client = BinanceFuturesClient(config)
|
client = BinanceFuturesClient(config)
|
||||||
with patch.object(
|
|
||||||
client.client,
|
|
||||||
"futures_change_leverage",
|
|
||||||
return_value={"leverage": 10},
|
|
||||||
):
|
|
||||||
result = await client.set_leverage(10)
|
result = await client.set_leverage(10)
|
||||||
assert result is not None
|
assert result is not None
|
||||||
|
|
||||||
|
|
||||||
def test_calculate_quantity(config):
|
def test_calculate_quantity(config):
|
||||||
|
with patch("src.exchange.Client") as MockClient:
|
||||||
|
MockClient.return_value = MagicMock()
|
||||||
client = BinanceFuturesClient(config)
|
client = BinanceFuturesClient(config)
|
||||||
# 잔고 1000 USDT, 리스크 2%, 레버리지 10, 가격 0.5
|
# 잔고 1000 USDT, 리스크 2%, 레버리지 10, 가격 0.5
|
||||||
qty = client.calculate_quantity(balance=1000.0, price=0.5, leverage=10)
|
qty = client.calculate_quantity(balance=1000.0, price=0.5, leverage=10)
|
||||||
|
|||||||
Reference in New Issue
Block a user