Kamixitong/test_web_log.py

137 lines
4.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import requests
from bs4 import BeautifulSoup
# 创建会话以保持登录状态
session = requests.Session()
def get_csrf_token():
"""从登录页面获取CSRF令牌"""
try:
response = session.get("http://localhost:5000/login")
soup = BeautifulSoup(response.text, 'html.parser')
csrf_input = soup.find('input', {'name': 'csrf_token'})
if csrf_input:
# 直接获取value属性
try:
# 忽略类型检查错误
csrf_token = csrf_input.get('value') # type: ignore
if not csrf_token:
csrf_token = csrf_input['value'] # type: ignore
if csrf_token:
return csrf_token
except:
pass
print("未找到CSRF令牌输入字段")
return None
except Exception as e:
print(f"获取CSRF令牌失败: {e}")
return None
def login():
"""登录系统"""
try:
# 获取CSRF令牌
csrf_token = get_csrf_token()
if not csrf_token:
return False
# 准备登录数据
login_data = {
'username': 'admin',
'password': 'admin123',
'csrf_token': csrf_token
}
# 发送登录请求
response = session.post("http://localhost:5000/login", data=login_data)
# 检查是否登录成功通过重定向到dashboard来判断
if response.url and 'dashboard' in response.url:
print("登录成功")
return True
else:
print(f"登录失败,状态码: {response.status_code}")
print(f"响应URL: {response.url}")
return False
except Exception as e:
print(f"登录过程中出现错误: {e}")
return False
def test_create_product():
"""测试创建产品"""
try:
# 准备产品数据
product_data = {
'product_name': '测试产品',
'description': '这是一个测试产品'
}
# 发送创建产品请求
response = session.post(
"http://localhost:5000/api/v1/products",
json=product_data,
headers={'Content-Type': 'application/json'}
)
print(f"创建产品状态码: {response.status_code}")
print(f"创建产品响应: {response.text}")
return response.status_code == 200
except Exception as e:
print(f"创建产品时出现错误: {e}")
return False
def test_get_logs():
"""测试获取操作日志"""
try:
# 发送获取日志请求
response = session.get("http://localhost:5000/api/v1/logs")
print(f"获取日志状态码: {response.status_code}")
print(f"获取日志响应: {response.text}")
return response.status_code == 200
except Exception as e:
print(f"获取日志时出现错误: {e}")
return False
def test_view_logs_page():
"""测试访问日志页面"""
try:
# 访问日志管理页面
response = session.get("http://localhost:5000/logs")
print(f"访问日志页面状态码: {response.status_code}")
if response.status_code == 200:
print("成功访问日志管理页面")
return True
else:
print(f"访问日志页面失败: {response.text}")
return False
except Exception as e:
print(f"访问日志页面时出现错误: {e}")
return False
if __name__ == "__main__":
print("开始测试日志功能...")
# 登录
if login():
print("=== 登录成功 ===")
# 测试创建产品(这会生成操作日志)
print("\n=== 测试创建产品 ===")
test_create_product()
# 测试获取操作日志
print("\n=== 测试获取操作日志 ===")
test_get_logs()
# 测试访问日志页面
print("\n=== 测试访问日志页面 ===")
test_view_logs_page()
else:
print("登录失败,无法继续测试")