Kamixitong/test_delete_version.py

90 lines
3.6 KiB
Python
Raw Normal View History

2025-11-19 22:49:24 +08:00
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
测试删除版本功能
"""
import requests
from bs4 import BeautifulSoup
import json
# 基础URL
BASE_URL = 'http://127.0.0.1:5000'
def test_delete_version():
# 创建会话
session = requests.Session()
try:
# 1. 访问登录页面获取CSRF token
print("1. 获取登录页面...")
login_page = session.get(f'{BASE_URL}/login')
print(f"登录页面状态: {login_page.status_code}")
# 解析CSRF token
soup = BeautifulSoup(login_page.text, 'html.parser')
csrf_token_input = soup.find('input', {'name': 'csrf_token'})
csrf_token = csrf_token_input['value'] if csrf_token_input else ''
print(f"CSRF Token: {csrf_token}")
# 2. 测试登录
print("\n2. 测试登录...")
login_data = {
'username': 'admin',
'password': 'admin123',
'csrf_token': csrf_token
}
login_response = session.post(f'{BASE_URL}/login', data=login_data)
print(f"登录响应状态: {login_response.status_code}")
# 检查是否登录成功
if login_response.status_code == 200 or login_response.status_code == 302:
print("登录成功!")
# 3. 测试获取版本列表
print("\n3. 测试获取版本列表...")
versions_response = session.get(f'{BASE_URL}/api/v1/versions')
print(f"版本列表状态: {versions_response.status_code}")
version_id = None
if versions_response.status_code == 200:
try:
versions_data = versions_response.json()
print(f"版本列表内容: {json.dumps(versions_data, ensure_ascii=False, indent=2)}")
# 获取第一个未发布的版本ID用于测试删除
if versions_data.get('data', {}).get('versions'):
for version in versions_data['data']['versions']:
if version['publish_status'] == 0: # 未发布状态
version_id = version['version_id']
print(f"将使用未发布版本ID进行测试: {version_id}")
break
except:
print(f"版本列表内容: {versions_response.text[:200]}")
else:
print(f"版本列表错误: {versions_response.text}")
# 4. 测试删除版本
if version_id:
print(f"\n4. 测试删除版本 (ID: {version_id})...")
delete_response = session.delete(f'{BASE_URL}/api/v1/versions/{version_id}')
print(f"删除版本状态: {delete_response.status_code}")
if delete_response.status_code == 200:
try:
delete_data = delete_response.json()
print(f"删除版本内容: {json.dumps(delete_data, ensure_ascii=False, indent=2)}")
except:
print(f"删除版本内容: {delete_response.text[:200]}")
else:
print(f"删除版本错误: {delete_response.text}")
else:
print("没有找到未发布的版本用于测试删除")
else:
print(f"登录失败: {login_response.text}")
except Exception as e:
print(f"测试过程中出现错误: {e}")
import traceback
traceback.print_exc()
if __name__ == '__main__':
test_delete_version()