mirror of
https://github.com/jihe520/MathModelAgent.git
synced 2026-10-20 05:49:56 +08:00
- 后端按 Google Python Style Guide 重构注释,修复 ruff 和 pyright 错误(161→0) - 前端按 Vue.js Style Guide 重构注释,修复 biome 错误 - 添加 PostToolUse lint hook(ruff + biome 自动检查) - 更新 CLAUDE.md 覆盖 Commands/Testing/Structure/CodeStyle/GitWorkflow/Boundaries - 修复 tsconfig.json 废弃的 baseUrl 配置
61 lines
1.7 KiB
Python
61 lines
1.7 KiB
Python
"""E2B 代码解释器集成测试。"""
|
|
|
|
import os
|
|
import asyncio
|
|
import unittest
|
|
|
|
from app.tools.e2b_interpreter import E2BCodeInterpreter
|
|
from app.tools.notebook_serializer import NotebookSerializer
|
|
from app.utils.common_utils import create_work_dir
|
|
|
|
|
|
|
|
class TestE2BCodeInterpreter(unittest.TestCase):
|
|
"""E2B 代码解释器测试用例。"""
|
|
|
|
def setUp(self):
|
|
"""初始化测试环境,创建沙箱和代码解释器。"""
|
|
if E2BCodeInterpreter is None:
|
|
self.skipTest("e2b_code_interpreter not available")
|
|
self.task_id = "20250312-104132-d3625cab"
|
|
self.work_dir = create_work_dir(self.task_id)
|
|
notebook_path = os.path.join(self.work_dir, "jupyter")
|
|
notebook = NotebookSerializer(notebook_path)
|
|
|
|
self.code_interpreter = E2BCodeInterpreter(
|
|
self.task_id, self.work_dir, notebook
|
|
)
|
|
|
|
def test_execute_code(self):
|
|
"""测试在 E2B 沙箱中执行 Python 代码。"""
|
|
if not os.getenv("E2B_API_KEY"):
|
|
self.skipTest("E2B_API_KEY not set")
|
|
|
|
code = """
|
|
import matplotlib.pyplot as plt
|
|
import numpy as np
|
|
|
|
# 生成数据
|
|
x = np.linspace(0, 2 * np.pi, 100) # x从0到2π,生成100个点
|
|
y = np.sin(x) # 计算对应的sin(x)值
|
|
|
|
# 绘图
|
|
plt.figure(figsize=(8, 4)) # 设置画布大小
|
|
plt.plot(x, y, label='y = sin(x)') # 绘制曲线,并添加图例
|
|
|
|
# 添加标签和标题
|
|
plt.title("Simple Sine Function")
|
|
plt.xlabel("x")
|
|
plt.ylabel("y")
|
|
|
|
# 添加网格和图例
|
|
plt.grid(True)
|
|
plt.legend()
|
|
|
|
# 显示图像
|
|
plt.show()
|
|
"""
|
|
asyncio.run(self.code_interpreter.initialize())
|
|
asyncio.run(self.code_interpreter.execute_code(code))
|
|
|