166 lines
6.6 KiB
Python
166 lines
6.6 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
测试井数据集成和DMS请求体格式的脚本
|
||
"""
|
||
|
||
import sys
|
||
import logging
|
||
import json
|
||
from ddms_compliance_suite.utils.data_generator import DataGenerator
|
||
from ddms_compliance_suite.utils.well_data_manager import WellDataManager
|
||
|
||
def test_well_data_integration():
|
||
"""测试井数据集成功能"""
|
||
|
||
# 设置日志
|
||
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
|
||
logger = logging.getLogger(__name__)
|
||
|
||
logger.info("开始测试井数据集成功能...")
|
||
|
||
# 模拟井数据管理器(因为无法连接真实API)
|
||
class MockWellDataManager:
|
||
def __init__(self):
|
||
self.well_data = [
|
||
{"wellId": "HB00019975", "wellCommonName": "郑4-106"},
|
||
{"wellId": "HB00019976", "wellCommonName": "郑4-107"}
|
||
]
|
||
self.wellbore_data = [
|
||
{"wellboreId": "WEBHHB100083169", "wellboreCommonName": "郑4-106主井筒"},
|
||
{"wellboreId": "WEBHHB100083170", "wellboreCommonName": "郑4-107主井筒"}
|
||
]
|
||
|
||
def is_well_related_field(self, field_name):
|
||
return field_name in ['wellId', 'wellboreId', 'wellCommonName']
|
||
|
||
def get_well_value_for_field(self, field_name):
|
||
if field_name == 'wellId':
|
||
return self.well_data[0]['wellId']
|
||
elif field_name == 'wellboreId':
|
||
return self.wellbore_data[0]['wellboreId']
|
||
elif field_name == 'wellCommonName':
|
||
return self.well_data[0]['wellCommonName']
|
||
return None
|
||
|
||
def enhance_data_with_well_values(self, data):
|
||
if not isinstance(data, dict):
|
||
return data
|
||
|
||
enhanced_data = data.copy()
|
||
for field_name, value in data.items():
|
||
if self.is_well_related_field(field_name):
|
||
real_value = self.get_well_value_for_field(field_name)
|
||
if real_value is not None:
|
||
enhanced_data[field_name] = real_value
|
||
logger.info(f"🔄 替换字段 '{field_name}': {value} -> {real_value}")
|
||
|
||
return enhanced_data
|
||
|
||
# 创建模拟的井数据管理器
|
||
mock_well_manager = MockWellDataManager()
|
||
|
||
# 创建数据生成器
|
||
data_generator = DataGenerator(logger_param=logger, well_data_manager=mock_well_manager)
|
||
|
||
# 测试1: 测试DMS创建请求体格式
|
||
logger.info("1. 测试DMS创建请求体格式...")
|
||
create_schema = {
|
||
"type": "object",
|
||
"properties": {
|
||
"version": {"type": "string", "example": "1.0.0"},
|
||
"act": {"type": "integer", "example": -1},
|
||
"data": {
|
||
"type": "array",
|
||
"items": {
|
||
"type": "object",
|
||
"properties": {
|
||
"wellId": {"type": "string"},
|
||
"wellboreId": {"type": "string"},
|
||
"wellCommonName": {"type": "string"},
|
||
"dataRegion": {"type": "string"},
|
||
"bsflag": {"type": "integer"}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"required": ["data"]
|
||
}
|
||
|
||
create_data = data_generator.generate_data_from_schema(create_schema, "create_request", "create_test")
|
||
logger.info(f"创建请求体: {json.dumps(create_data, ensure_ascii=False, indent=2)}")
|
||
|
||
# 验证创建请求体格式
|
||
assert "version" in create_data, "创建请求体缺少version字段"
|
||
assert "act" in create_data, "创建请求体缺少act字段"
|
||
assert "data" in create_data, "创建请求体缺少data字段"
|
||
assert create_data["act"] == -1, f"创建请求体act字段值错误,期望-1,实际{create_data['act']}"
|
||
|
||
# 验证井数据是否被正确应用
|
||
if create_data["data"] and len(create_data["data"]) > 0:
|
||
first_item = create_data["data"][0]
|
||
if "wellId" in first_item:
|
||
assert first_item["wellId"] == "HB00019975", f"wellId未使用真实值,实际值: {first_item['wellId']}"
|
||
logger.info("✅ wellId使用了真实值")
|
||
if "wellCommonName" in first_item:
|
||
assert first_item["wellCommonName"] == "郑4-106", f"wellCommonName未使用真实值,实际值: {first_item['wellCommonName']}"
|
||
logger.info("✅ wellCommonName使用了真实值")
|
||
|
||
# 测试2: 测试DMS删除请求体格式
|
||
logger.info("2. 测试DMS删除请求体格式...")
|
||
delete_schema = {
|
||
"type": "object",
|
||
"properties": {
|
||
"version": {"type": "string", "example": "1.0.0"},
|
||
"data": {
|
||
"type": "array",
|
||
"items": {"type": "string"}
|
||
}
|
||
},
|
||
"required": ["data"]
|
||
}
|
||
|
||
delete_data = data_generator.generate_data_from_schema(delete_schema, "delete_request", "delete_test")
|
||
logger.info(f"删除请求体: {json.dumps(delete_data, ensure_ascii=False, indent=2)}")
|
||
|
||
# 验证删除请求体格式
|
||
assert "version" in delete_data, "删除请求体缺少version字段"
|
||
assert "data" in delete_data, "删除请求体缺少data字段"
|
||
assert delete_data["version"] == "1.0.0", f"删除请求体version字段值错误,期望1.0.0,实际{delete_data['version']}"
|
||
|
||
# 测试3: 测试查询请求体格式
|
||
logger.info("3. 测试查询请求体格式...")
|
||
list_schema = {
|
||
"type": "object",
|
||
"properties": {
|
||
"version": {"type": "string", "example": "1.0.0"},
|
||
"isSearchCount": {"type": "boolean", "example": True},
|
||
"query": {
|
||
"type": "object",
|
||
"properties": {
|
||
"fields": {"type": "array", "items": {"type": "string"}},
|
||
"filter": {"type": "object"}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
list_data = data_generator.generate_data_from_schema(list_schema, "list_request", "list_test")
|
||
logger.info(f"查询请求体: {json.dumps(list_data, ensure_ascii=False, indent=2)}")
|
||
|
||
# 验证查询请求体格式
|
||
assert "version" in list_data, "查询请求体缺少version字段"
|
||
assert list_data["version"] == "1.0.0", f"查询请求体version字段值错误,期望1.0.0,实际{list_data['version']}"
|
||
|
||
logger.info("🎉 所有测试通过!")
|
||
return True
|
||
|
||
if __name__ == "__main__":
|
||
try:
|
||
success = test_well_data_integration()
|
||
sys.exit(0 if success else 1)
|
||
except Exception as e:
|
||
print(f"❌ 测试失败: {e}")
|
||
import traceback
|
||
traceback.print_exc()
|
||
sys.exit(1)
|