Initial commit: Markdown editor with file management and regex tools
项目特性: - 完整的Markdown编辑器,支持实时预览 - 文件管理功能,支持保存/加载/删除文件 - 正则表达式工具,支持批量文本替换 - 前后端分离架构 - 响应式设计 技术栈: - 前端:React + TypeScript + Vite - 后端:Python Flask - Markdown解析:Python-Markdown 包含组件: - WorkingMarkdownEditor: 基础功能版本 - FullMarkdownEditor: 完整功能版本 - SimpleMarkdownEditor: 简化版本
This commit is contained in:
140
test_backend.py
Normal file
140
test_backend.py
Normal file
@@ -0,0 +1,140 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
后端测试脚本
|
||||
验证所有后端功能是否正常工作
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
import requests
|
||||
from pathlib import Path
|
||||
|
||||
# 添加当前目录到Python路径
|
||||
sys.path.insert(0, '.')
|
||||
|
||||
import os
|
||||
os.chdir('backend')
|
||||
from utils.markdown_parser import MarkdownParser
|
||||
from utils.file_manager import FileManager
|
||||
from utils.regex_processor import RegexProcessor
|
||||
|
||||
def test_markdown_parser():
|
||||
"""测试Markdown解析器"""
|
||||
print("🧪 测试Markdown解析器...")
|
||||
parser = MarkdownParser()
|
||||
|
||||
# 基础测试
|
||||
result = parser.parse('# 测试标题')
|
||||
assert '<h1' in result['html'], "标题解析失败"
|
||||
|
||||
# 复杂测试
|
||||
complex_md = """
|
||||
# 主标题
|
||||
|
||||
这是一段**粗体**文本和*斜体*文本。
|
||||
|
||||
## 代码块
|
||||
|
||||
```python
|
||||
def hello():
|
||||
print("Hello, World!")
|
||||
```
|
||||
|
||||
## 表格
|
||||
|
||||
| 列1 | 列2 |
|
||||
|-----|-----|
|
||||
| 数据1 | 数据2 |
|
||||
|
||||
## 数学公式
|
||||
|
||||
$E = mc^2$
|
||||
"""
|
||||
|
||||
result = parser.parse(complex_md)
|
||||
assert result['word_count'] > 0, "字数统计失败"
|
||||
assert result['reading_time'] > 0, "阅读时间计算失败"
|
||||
|
||||
print("✅ Markdown解析器测试通过")
|
||||
|
||||
def test_file_manager():
|
||||
"""测试文件管理器"""
|
||||
print("🧪 测试文件管理器...")
|
||||
|
||||
# 创建测试目录
|
||||
test_dir = Path("backend/workspace/test")
|
||||
test_dir.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
fm = FileManager()
|
||||
|
||||
# 测试写入
|
||||
test_content = "# 测试文件\n这是测试内容"
|
||||
fm.write_file("test/test.md", test_content)
|
||||
|
||||
# 测试读取
|
||||
content = fm.read_file("test/test.md")
|
||||
assert content == test_content, "文件读写不一致"
|
||||
|
||||
# 测试列表
|
||||
files = fm.list_files("test")
|
||||
assert len(files) > 0, "文件列表为空"
|
||||
|
||||
# 清理
|
||||
import shutil
|
||||
shutil.rmtree("workspace/test", ignore_errors=True)
|
||||
|
||||
print("✅ 文件管理器测试通过")
|
||||
|
||||
def test_regex_processor():
|
||||
"""测试正则表达式处理器"""
|
||||
print("🧪 测试正则表达式处理器...")
|
||||
|
||||
processor = RegexProcessor()
|
||||
|
||||
# 测试替换
|
||||
content = "Hello World, Hello Python"
|
||||
result = processor.replace(content, "Hello", "Hi", "gi")
|
||||
assert result['result'] == "Hi World, Hi Python", "替换失败"
|
||||
|
||||
# 测试提取
|
||||
content = "邮箱: test@example.com, 另一个: user@domain.org"
|
||||
matches = processor.extract(content, r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b', "g")
|
||||
assert len(matches) == 2, "提取失败"
|
||||
|
||||
print("✅ 正则表达式处理器测试通过")
|
||||
|
||||
def test_api_health():
|
||||
"""测试API健康检查"""
|
||||
print("🧪 测试API健康检查...")
|
||||
|
||||
try:
|
||||
from app import create_app
|
||||
app = create_app()
|
||||
with app.test_client() as client:
|
||||
response = client.get('/api/health')
|
||||
assert response.status_code == 200
|
||||
data = response.get_json()
|
||||
assert data['status'] == 'healthy'
|
||||
print("✅ API健康检查测试通过")
|
||||
except Exception as e:
|
||||
print(f"❌ API健康检查测试失败: {e}")
|
||||
|
||||
def main():
|
||||
"""运行所有测试"""
|
||||
print("🚀 开始后端功能测试...")
|
||||
|
||||
# 确保workspace目录存在
|
||||
Path("backend/workspace").mkdir(exist_ok=True)
|
||||
|
||||
try:
|
||||
test_markdown_parser()
|
||||
test_file_manager()
|
||||
test_regex_processor()
|
||||
test_api_health()
|
||||
print("\n🎉 所有测试通过!后端功能正常")
|
||||
except Exception as e:
|
||||
print(f"\n❌ 测试失败: {e}")
|
||||
sys.exit(1)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
Reference in New Issue
Block a user