test/framework/scripts/file_system_scenario.py

61 lines
2.1 KiB
Python

# framework/scripts/file_system_scenario.py
import os
import time
from framework.core.logger import get_logger
logger = get_logger("FileSystemScenario")
def run_stress_upload_test(fm, file_path, cycles=3):
"""
业务逻辑:文件上传压力测试(大文件上传-取消)
"""
logger.info(f"🚀 启动上传-取消压测 - {cycles}")
for i in range(1, cycles + 1):
logger.info(f"--- 循环第 {i} 次 ---")
try:
fm.upload_files(file_path)
# 大文件需要等一下让上传进度条和取消按钮出现
time.sleep(3)
fm.cancel_upload()
except Exception as e:
logger.warning(f"压测第 {i} 次异常(可忽略): {e}")
# 确保弹窗关闭,不影响下一轮
try:
fm.page.evaluate("document.querySelector('button.p-dialog-header-close')?.click()")
except:
pass
time.sleep(1)
def run_full_file_lifecycle(fm, folder_name):
"""
业务逻辑:完整的文件生命周期流程(大文件版本)
"""
logger.info(f"--- 开启文件系统全生命周期测试 [{folder_name}] ---")
fm.navigate_to()
# 1. 创建并进入
fm.create_folder(folder_name)
fm.enter_folder(folder_name)
# 2. 上传压力测试
from framework.config.settings import Config
test_file = Config.TEST_FILE
if os.path.exists(test_file):
logger.info(f"📄 测试文件: {test_file} ({os.path.getsize(test_file)} bytes)")
run_stress_upload_test(fm, test_file, cycles=3)
# 3. 正式上传(等待完成)
fm.upload_files(test_file)
fm.wait_for_success(count=1)
# 4. 重命名与删除
fm.rename_item("Fruits-15.zip", "UI_TEST_RENAMED.zip")
fm.delete_item("UI_TEST_RENAMED.zip")
else:
logger.warning(f"⚠️ 测试文件不存在: {test_file},跳过上传测试")
# 5. 清理
fm.back_to_root()
fm.delete_item(folder_name)
logger.info("✅ 文件系统场景测试完成")