Files
Yb-QaAutomationHub/tests/web/admin/test_login/test_login.py
T
xst 03e152baab feat: 重构测试框架 — 覆盖 6 端 (管理端 + 小程序 + 4 个移动端)
目录结构:
  tests/web/admin/       管理端 (Playwright)
  tests/web/mini_program/ 司机端小程序 (Playwright/微信 WebView)
  tests/app/driver_android/  司机安卓 (Appium)
  tests/app/shipper_android/ 货主安卓 (Appium)
  tests/app/driver_ios/      司机苹果 (Appium)
  tests/app/shipper_ios/     货主苹果 (Appium)

公共模块:
  tests/app/_shared.py       driver+ensure_logged_in 工厂
  tests/app/_base_page.py    App Page Object 基类

配置:
  test_config.yaml 拆分为 6 个独立 section + 货主账号
2026-07-15 14:02:08 +08:00

75 lines
2.6 KiB
Python

"""管理端登录测试用例。
标记:
pytest -m admin # 仅管理端用例
pytest -m p0 # P0 冒烟
pytest -m smoke # 冒烟
"""
import pytest
from playwright.sync_api import Page
pytestmark = [pytest.mark.admin]
class TestAdminSmoke:
"""管理端冒烟 — 验证预登录态。"""
@pytest.mark.p0
@pytest.mark.smoke
def test_admin_access_with_saved_auth(self, page: Page, admin_config, ensure_login):
"""验证预登录态可直接访问管理后台。"""
ensure_login("super_admin")
page.goto(admin_config["base_url"])
page.wait_for_timeout(2000)
assert "#/login" not in page.url and "/login" not in page.url, (
"预登录态失效!请运行: python tests/web/admin/save_auth.py"
)
@pytest.mark.p0
@pytest.mark.smoke
def test_team_leader_access(self, page: Page, admin_config, ensure_login):
"""验证车队长预登录态有效。"""
ensure_login("team_leader")
page.goto(admin_config["base_url"])
page.wait_for_timeout(2000)
assert "#/login" not in page.url and "/login" not in page.url
@pytest.mark.p0
@pytest.mark.smoke
def test_dashboard_loads(self, page: Page, admin_config, ensure_login):
"""验证首页可正常加载。"""
ensure_login("super_admin")
page.goto(admin_config["base_url"])
assert page.title(), "首页应显示页面标题"
class TestLoginPage:
"""登录页交互验证。"""
@pytest.mark.p1
def test_login_page_accessible(self, page: Page, admin_config):
"""验证登录页可正常访问。"""
page.goto(f"{admin_config['base_url']}/#/login")
assert page.get_by_placeholder("请输入用户名").is_visible()
@pytest.mark.p1
def test_login_page_elements(self, page: Page, admin_config):
"""验证登录页元素完整。"""
page.goto(f"{admin_config['base_url']}/#/login")
assert page.get_by_placeholder("请输入用户名").is_visible()
assert page.get_by_placeholder("请输入密码").is_visible()
assert page.get_by_role("button", name="登录").is_visible()
@pytest.mark.p1
def test_session_redirect(self, page: Page, admin_config, ensure_login):
"""验证已登录用户访问登录页被重定向。"""
ensure_login("super_admin")
page.goto(admin_config["base_url"])
page.wait_for_timeout(2000)
assert "#/login" not in page.url
page.goto(f"{admin_config['base_url']}/#/login")
page.wait_for_timeout(2000)
assert "#/login" not in page.url and "/login" not in page.url