90 lines
3.6 KiB
Python
90 lines
3.6 KiB
Python
|
|
#!/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()
|