Skip to content

Commit 5d5285c

Browse files
committed
🎈 Perf(optimized code): 优化代码
1 parent 87591c6 commit 5d5285c

File tree

15 files changed

+158
-196
lines changed

15 files changed

+158
-196
lines changed

backend/plugin/api_testing/api/v1/assertion.py

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,18 @@
44
断言API
55
"""
66
from typing import Any, Dict, List
7-
87
from fastapi import APIRouter, Body
9-
from fastapi.responses import JSONResponse
10-
11-
from backend.common.response.response_schema import response_base
12-
from backend.plugin.api_testing.utils.assertion import Assertion, AssertionEngine, AssertionResult
8+
from backend.common.response.response_schema import response_base, ResponseModel, ResponseSchemaModel
9+
from backend.plugin.api_testing.utils.assertion import Assertion, AssertionEngine
1310

1411
router = APIRouter()
1512

1613

17-
@router.post("/validate", response_model=Dict[str, Any], summary="执行断言验证")
14+
@router.post("/validate", response_model=ResponseModel, summary="执行断言验证")
1815
async def execute_assertion(
19-
assertion: Assertion = Body(...),
20-
response_data: Dict[str, Any] = Body(...)
21-
) -> JSONResponse:
16+
assertion: Assertion = Body(...),
17+
response_data: Dict[str, Any] = Body(...)
18+
) -> ResponseModel | ResponseSchemaModel:
2219
"""
2320
执行断言验证接口
2421
@@ -27,17 +24,17 @@ async def execute_assertion(
2724
try:
2825
# 执行断言
2926
result = AssertionEngine.execute_assertion(assertion, response_data)
30-
27+
3128
return response_base.success(data=result.model_dump())
3229
except Exception as e:
33-
return response_base.fail(msg=f"断言执行失败: {str(e)}")
30+
return response_base.fail(data=f"断言执行失败: {str(e)}")
3431

3532

36-
@router.post("/batch-validate", response_model=Dict[str, Any], summary="批量执行断言验证")
33+
@router.post("/batch-validate", response_model=ResponseModel, summary="批量执行断言验证")
3734
async def execute_batch_assertions(
38-
assertions: List[Assertion] = Body(...),
39-
response_data: Dict[str, Any] = Body(...)
40-
) -> JSONResponse:
35+
assertions: List[Assertion] = Body(...),
36+
response_data: Dict[str, Any] = Body(...)
37+
) -> ResponseModel | ResponseSchemaModel:
4138
"""
4239
批量执行断言验证接口
4340
@@ -46,7 +43,7 @@ async def execute_batch_assertions(
4643
try:
4744
# 执行批量断言
4845
results = AssertionEngine.execute_assertions(assertions, response_data)
49-
46+
5047
# 构建响应
5148
data = {
5249
"results": [result.model_dump() for result in results],
@@ -56,7 +53,7 @@ async def execute_batch_assertions(
5653
"failed": sum(1 for result in results if not result.success)
5754
}
5855
}
59-
56+
6057
return response_base.success(data=data)
6158
except Exception as e:
62-
return response_base.fail(msg=f"批量断言执行失败: {str(e)}")
59+
return response_base.fail(data=f"批量断言执行失败: {str(e)}")

backend/plugin/api_testing/api/v1/data_driven.py

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,13 @@
33
"""
44
数据驱动测试API
55
"""
6-
from typing import Dict, List, Optional, Any, Coroutine
7-
8-
from fastapi import APIRouter, Body, Path, Query, UploadFile, File, Form
9-
from fastapi.responses import JSONResponse
106
import pandas as pd
117
import json
128
import os
13-
import tempfile
14-
9+
from fastapi import APIRouter, Path, UploadFile, File, Form
1510
from backend.common.response.response_schema import response_base, ResponseModel, ResponseSchemaModel
1611
from backend.plugin.api_testing.utils.data_driven import (
17-
DataDriverManager, DataDrivenConfig, DataSourceConfig,
18-
DataSourceType, DatabaseType, TestCaseParameter, TestIteration
12+
DataDriverManager, DataDrivenConfig, DataSourceConfig, DataSourceType
1913
)
2014

2115
router = APIRouter()

backend/plugin/api_testing/api/v1/environment.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,12 @@
33
"""
44
环境和变量管理API
55
"""
6-
from typing import Dict, List, Optional, Any
7-
6+
from typing import Dict, Optional, Any
87
from fastapi import APIRouter, Body, Path, Query
9-
from fastapi.responses import JSONResponse
108

119
from backend.common.response.response_schema import response_base, ResponseModel, ResponseSchemaModel
1210
from backend.plugin.api_testing.utils.environment import (
13-
EnvironmentManager, EnvironmentModel, VariableManager, VariableModel,
14-
VariableScope, EnvironmentType
11+
EnvironmentManager, EnvironmentModel, VariableManager, VariableModel, VariableScope
1512
)
1613

1714
router = APIRouter()

backend/plugin/api_testing/api/v1/history.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,8 @@
55
提供接口请求历史记录的API
66
"""
77
from datetime import datetime
8-
from typing import Any, Dict, List, Optional, Coroutine
8+
from typing import Any, List, Optional
99
from fastapi import APIRouter, Body, Query
10-
from fastapi.responses import JSONResponse
1110
from pydantic import BaseModel, Field
1211
from backend.common.response.response_schema import response_base, ResponseModel, ResponseSchemaModel
1312
from backend.plugin.api_testing.utils.history import HistoryManager, RequestHistoryItem

backend/plugin/api_testing/api/v1/report.py

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,20 @@
33
"""
44
测试报告API
55
"""
6-
from typing import Any, Dict, List
7-
6+
from typing import Any, Dict
87
from fastapi import APIRouter, Body
9-
from fastapi.responses import JSONResponse, HTMLResponse
10-
11-
from backend.common.response.response_schema import response_base
8+
from fastapi.responses import HTMLResponse
9+
from backend.common.response.response_schema import response_base, ResponseModel, ResponseSchemaModel
1210
from backend.plugin.api_testing.utils.report_generator import ReportFormat, TestReport, report_generator
1311

1412
router = APIRouter()
1513

1614

1715
@router.post("/generate", response_model=Dict[str, Any], summary="生成测试报告")
1816
async def generate_report(
19-
report_data: TestReport = Body(...),
20-
format: ReportFormat = Body(ReportFormat.HTML)
21-
) -> JSONResponse:
17+
report_data: TestReport = Body(...),
18+
format: ReportFormat = Body(ReportFormat.HTML)
19+
) -> ResponseModel | ResponseSchemaModel:
2220
"""
2321
生成测试报告接口
2422
@@ -27,18 +25,18 @@ async def generate_report(
2725
try:
2826
# 生成报告
2927
report_content = report_generator.generate_report(report_data, format)
30-
28+
3129
# 构建响应
3230
data = {"content": report_content, "format": format}
33-
31+
3432
return response_base.success(data=data)
3533
except Exception as e:
36-
return response_base.fail(msg=f"报告生成失败: {str(e)}")
34+
return response_base.fail(data=f"报告生成失败: {str(e)}")
3735

3836

3937
@router.post("/preview", response_class=HTMLResponse, summary="预览HTML测试报告")
4038
async def preview_html_report(
41-
report_data: TestReport = Body(...)
39+
report_data: TestReport = Body(...)
4240
) -> HTMLResponse:
4341
"""
4442
预览HTML测试报告
@@ -48,7 +46,7 @@ async def preview_html_report(
4846
try:
4947
# 生成HTML报告
5048
report_content = report_generator.generate_report(report_data, ReportFormat.HTML)
51-
49+
5250
# 直接返回HTML内容
5351
return HTMLResponse(content=report_content)
5452
except Exception as e:
@@ -60,4 +58,4 @@ async def preview_html_report(
6058
</body>
6159
</html>
6260
"""
63-
return HTMLResponse(content=error_html, status_code=500)
61+
return HTMLResponse(content=error_html, status_code=500)

backend/plugin/api_testing/model/models.py

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
#!/usr/bin/env python3
22
# -*- coding: utf-8 -*-
33
from datetime import datetime
4-
from typing import Dict, List, Optional, Any
5-
4+
from typing import List
65
from sqlalchemy import Column, Integer, String, Text, DateTime, Boolean, JSON, ForeignKey
7-
from sqlalchemy.orm import relationship
8-
6+
from sqlalchemy.orm import relationship, Mapped
97
from backend.common.enums import StatusType
10-
from backend.database.db_mysql import Base
8+
from backend.common.model import Base
119

1210

1311
class ApiProject(Base):
@@ -25,7 +23,7 @@ class ApiProject(Base):
2523
update_time = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment='更新时间')
2624

2725
# 关联关系
28-
test_cases = relationship("ApiTestCase", back_populates="project")
26+
test_cases: Mapped[List["ApiTestCase"]] = relationship("ApiTestCase", back_populates="project")
2927

3028

3129
class ApiTestCase(Base):
@@ -43,9 +41,9 @@ class ApiTestCase(Base):
4341
update_time = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment='更新时间')
4442

4543
# 关联关系
46-
project = relationship("ApiProject", back_populates="test_cases")
47-
steps = relationship("ApiTestStep", back_populates="test_case")
48-
reports = relationship("ApiTestReport", back_populates="test_case")
44+
project: Mapped[List["ApiProject"]] = relationship("ApiProject", back_populates="test_cases")
45+
steps: Mapped[List["ApiTestStep"]] = relationship("ApiTestStep", back_populates="test_case")
46+
reports: Mapped[List["ApiTestReport"]] = relationship("ApiTestReport", back_populates="test_case")
4947

5048

5149
class ApiTestStep(Base):
@@ -74,7 +72,7 @@ class ApiTestStep(Base):
7472
update_time = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment='更新时间')
7573

7674
# 关联关系
77-
test_case = relationship("ApiTestCase", back_populates="steps")
75+
test_case: Mapped[List["ApiTestCase"]] = relationship("ApiTestCase", back_populates="steps")
7876

7977

8078
class ApiTestReport(Base):
@@ -95,4 +93,4 @@ class ApiTestReport(Base):
9593
create_time = Column(DateTime, default=datetime.now, comment='创建时间')
9694

9795
# 关联关系
98-
test_case = relationship("ApiTestCase", back_populates="reports")
96+
test_case: Mapped[List["ApiTestCase"]] = relationship("ApiTestCase", back_populates="reports")

0 commit comments

Comments
 (0)