91 lines
2.4 KiB
Python
91 lines
2.4 KiB
Python
"""
|
|
Pytest 配置和共享 fixtures
|
|
"""
|
|
import pytest
|
|
from fastapi.testclient import TestClient
|
|
import sys
|
|
import os
|
|
|
|
# 添加项目根目录到 sys.path
|
|
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
|
|
|
from main import app
|
|
from config.settings import settings
|
|
from routers.api import file_service
|
|
|
|
|
|
class FakeStaffIdentityRepository:
|
|
def select_random_staff_with_families(self):
|
|
return {
|
|
"staff_name": "测试员工",
|
|
"staff_id_card": "320101199001010030",
|
|
"family_id_cards": ["320101199201010051"],
|
|
}
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def reset_file_service_state():
|
|
"""避免 file_service 单例状态影响测试顺序。"""
|
|
file_service.file_records.clear()
|
|
file_service.log_counter = settings.INITIAL_LOG_ID
|
|
file_service.staff_identity_repository = FakeStaffIdentityRepository()
|
|
yield
|
|
file_service.file_records.clear()
|
|
file_service.log_counter = settings.INITIAL_LOG_ID
|
|
|
|
|
|
@pytest.fixture
|
|
def client():
|
|
"""创建测试客户端"""
|
|
original_routes = list(app.router.routes)
|
|
try:
|
|
from routers import credit_api
|
|
|
|
if not any(route.path == "/xfeature-mngs/conversation/htmlEval" for route in app.routes):
|
|
app.include_router(credit_api.router, tags=["征信解析接口"])
|
|
app.openapi_schema = None
|
|
except ModuleNotFoundError:
|
|
pass
|
|
|
|
try:
|
|
yield TestClient(app)
|
|
finally:
|
|
app.router.routes[:] = original_routes
|
|
app.openapi_schema = None
|
|
|
|
|
|
@pytest.fixture
|
|
def sample_token_request():
|
|
"""示例 Token 请求 - 返回 form-data 格式的数据"""
|
|
return {
|
|
"projectNo": "test_project_001",
|
|
"entityName": "测试企业",
|
|
"userId": "902001",
|
|
"userName": "902001",
|
|
"appId": "remote_app",
|
|
"appSecretCode": "test_secret_code_12345",
|
|
"role": "VIEWER",
|
|
"orgCode": "902000",
|
|
"departmentCode": "902000",
|
|
}
|
|
|
|
|
|
@pytest.fixture
|
|
def sample_inner_flow_request():
|
|
"""示例拉取行内流水请求"""
|
|
return {
|
|
"groupId": 1001,
|
|
"customerNo": "test_customer_001",
|
|
"dataChannelCode": "test_code",
|
|
"requestDateId": 20240101,
|
|
"dataStartDateId": 20240101,
|
|
"dataEndDateId": 20240131,
|
|
"uploadUserId": 902001,
|
|
}
|
|
|
|
|
|
@pytest.fixture
|
|
def sample_credit_html_file():
|
|
"""示例征信 HTML 文件。"""
|
|
return ("credit.html", b"<html></html>", "text/html")
|