#!/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()