add more components
This commit is contained in:
@@ -0,0 +1,131 @@
|
||||
"""
|
||||
测试自动刷新功能
|
||||
"""
|
||||
|
||||
import time
|
||||
import requests
|
||||
from selenium import webdriver
|
||||
from selenium.webdriver.common.by import By
|
||||
from selenium.webdriver.support.ui import WebDriverWait
|
||||
from selenium.webdriver.support import expected_conditions as EC
|
||||
from selenium.webdriver.chrome.options import Options
|
||||
import unittest
|
||||
|
||||
class TestAutoRefresh(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
"""设置测试环境"""
|
||||
# 配置Chrome选项
|
||||
chrome_options = Options()
|
||||
chrome_options.add_argument('--headless') # 无头模式
|
||||
chrome_options.add_argument('--no-sandbox')
|
||||
chrome_options.add_argument('--disable-dev-shm-usage')
|
||||
|
||||
try:
|
||||
self.driver = webdriver.Chrome(options=chrome_options)
|
||||
self.driver.get('http://localhost:8051')
|
||||
self.wait = WebDriverWait(self.driver, 10)
|
||||
except Exception as e:
|
||||
print(f"无法启动Chrome浏览器: {e}")
|
||||
self.skipTest("Chrome浏览器不可用")
|
||||
|
||||
def tearDown(self):
|
||||
"""清理测试环境"""
|
||||
if hasattr(self, 'driver'):
|
||||
self.driver.quit()
|
||||
|
||||
def test_auto_refresh_components_exist(self):
|
||||
"""测试自动刷新组件是否存在"""
|
||||
# 检查自动刷新勾选框
|
||||
auto_refresh_toggle = self.wait.until(
|
||||
EC.presence_of_element_located((By.ID, 'auto-refresh-toggle'))
|
||||
)
|
||||
self.assertIsNotNone(auto_refresh_toggle)
|
||||
|
||||
# 检查刷新间隔下拉菜单
|
||||
refresh_interval_dropdown = self.driver.find_element(By.ID, 'refresh-interval-dropdown')
|
||||
self.assertIsNotNone(refresh_interval_dropdown)
|
||||
|
||||
# 检查状态显示
|
||||
refresh_status = self.driver.find_element(By.ID, 'refresh-status')
|
||||
self.assertIsNotNone(refresh_status)
|
||||
|
||||
# 检查下次刷新时间显示
|
||||
next_refresh_time = self.driver.find_element(By.ID, 'next-refresh-time')
|
||||
self.assertIsNotNone(next_refresh_time)
|
||||
|
||||
def test_initial_state(self):
|
||||
"""测试初始状态"""
|
||||
# 检查初始状态:自动刷新未启用
|
||||
refresh_status = self.driver.find_element(By.ID, 'refresh-status')
|
||||
self.assertEqual(refresh_status.text, "未启用")
|
||||
|
||||
# 检查下次刷新时间显示为 "--"
|
||||
next_refresh_time = self.driver.find_element(By.ID, 'next-refresh-time')
|
||||
self.assertEqual(next_refresh_time.text, "--")
|
||||
|
||||
# 检查刷新间隔下拉菜单是否禁用
|
||||
refresh_interval_dropdown = self.driver.find_element(By.ID, 'refresh-interval-dropdown')
|
||||
# Dash组件的disabled状态需要通过其他方式检查
|
||||
|
||||
def test_enable_auto_refresh(self):
|
||||
"""测试启用自动刷新"""
|
||||
# 勾选自动刷新
|
||||
auto_refresh_checkbox = self.wait.until(
|
||||
EC.element_to_be_clickable((By.XPATH, "//input[@value='enabled']"))
|
||||
)
|
||||
auto_refresh_checkbox.click()
|
||||
|
||||
# 等待状态更新
|
||||
time.sleep(2)
|
||||
|
||||
# 检查状态是否更新
|
||||
refresh_status = self.driver.find_element(By.ID, 'refresh-status')
|
||||
self.assertIn("已启用", refresh_status.text)
|
||||
self.assertIn("15秒", refresh_status.text) # 默认15秒
|
||||
|
||||
def test_change_refresh_interval(self):
|
||||
"""测试更改刷新间隔"""
|
||||
# 先启用自动刷新
|
||||
auto_refresh_checkbox = self.wait.until(
|
||||
EC.element_to_be_clickable((By.XPATH, "//input[@value='enabled']"))
|
||||
)
|
||||
auto_refresh_checkbox.click()
|
||||
time.sleep(1)
|
||||
|
||||
# 更改刷新间隔(这部分可能需要根据Dash的实际实现调整)
|
||||
# 由于Dash组件的交互比较复杂,这里主要验证组件存在
|
||||
refresh_interval_dropdown = self.driver.find_element(By.ID, 'refresh-interval-dropdown')
|
||||
self.assertIsNotNone(refresh_interval_dropdown)
|
||||
|
||||
def test_web_server_running():
|
||||
"""测试Web服务器是否运行"""
|
||||
try:
|
||||
response = requests.get('http://localhost:8051', timeout=5)
|
||||
return response.status_code == 200
|
||||
except:
|
||||
return False
|
||||
|
||||
if __name__ == '__main__':
|
||||
print("测试自动刷新功能...")
|
||||
|
||||
# 首先检查web服务器是否运行
|
||||
if not test_web_server_running():
|
||||
print("❌ Web服务器未运行在 http://localhost:8051")
|
||||
print("请先运行: python -c \"from web.app import run_app; run_app(debug=False, port=8051)\"")
|
||||
exit(1)
|
||||
|
||||
print("✅ Web服务器正在运行")
|
||||
|
||||
# 运行测试
|
||||
try:
|
||||
unittest.main(argv=[''], exit=False, verbosity=2)
|
||||
except Exception as e:
|
||||
print(f"测试运行出错: {e}")
|
||||
print("可能是因为没有安装selenium或Chrome驱动")
|
||||
print("手动测试建议:")
|
||||
print("1. 打开浏览器访问 http://localhost:8051")
|
||||
print("2. 查看是否有'自动刷新'勾选框和'刷新间隔'下拉菜单")
|
||||
print("3. 勾选自动刷新,查看状态是否变为'已启用'")
|
||||
print("4. 修改刷新间隔,查看状态是否相应更新")
|
||||
print("5. 点击'获取数据并分析'按钮,然后观察是否会自动刷新")
|
||||
Reference in New Issue
Block a user