feat: 新增JoyHub UI自动化测试目录
1. 新增 Joyhub_ui_auto_test/ 目录: - tests/ - 测试用例目录 - pages/ - 页面元素定位 - config/ - 配置文件 - utils/ - 工具类 - test_data/ - 测试数据 - reports/ - 测试报告 - webapp-testing/ - WebApp测试相关 2. 配置文件: - pytest.ini - pytest配置 - requirements.txt - 依赖列表 - README.md - 项目说明
This commit is contained in:
65
Joyhub_ui_auto_test/tests/test_login_logout.py
Normal file
65
Joyhub_ui_auto_test/tests/test_login_logout.py
Normal file
@@ -0,0 +1,65 @@
|
||||
from pathlib import Path
|
||||
import sys
|
||||
|
||||
import pytest
|
||||
from playwright.sync_api import expect
|
||||
|
||||
PROJECT_ROOT = Path(__file__).resolve().parents[1]
|
||||
if str(PROJECT_ROOT) not in sys.path:
|
||||
sys.path.insert(0, str(PROJECT_ROOT))
|
||||
|
||||
from config.settings import settings
|
||||
from utils.logger import get_logger
|
||||
|
||||
logger = get_logger(__name__)
|
||||
|
||||
|
||||
def test_login_success_then_logout_wait_3s_and_close_browser(page, ensure_guest_user):
|
||||
logger.info("使用 pytest-playwright 统一无头浏览器配置")
|
||||
|
||||
logger.info("打开链接地址: %s", settings.base_url)
|
||||
page.goto(settings.base_url, wait_until="domcontentloaded")
|
||||
ensure_guest_user()
|
||||
|
||||
logger.info("点击登录入口打开登录弹窗")
|
||||
page.locator("aside button").first.click()
|
||||
|
||||
logger.info("动态获取登录弹窗输入框并输入邮箱: %s", settings.login_email)
|
||||
login_inputs = page.locator('input[type="text"]')
|
||||
expect(login_inputs.first).to_be_visible(timeout=settings.default_timeout)
|
||||
login_inputs.nth(0).fill(settings.login_email)
|
||||
|
||||
logger.info("输入验证码")
|
||||
login_inputs.nth(1).fill(settings.verification_code)
|
||||
|
||||
logger.info("动态勾选登录确认项")
|
||||
confirmation_items = page.locator("div.inline-flex.cursor-pointer")
|
||||
expect(confirmation_items.nth(0)).to_be_visible(timeout=settings.default_timeout)
|
||||
expect(confirmation_items.nth(1)).to_be_visible(timeout=settings.default_timeout)
|
||||
confirmation_items.nth(0).click()
|
||||
confirmation_items.nth(1).click()
|
||||
|
||||
logger.info("提交登录")
|
||||
submit_button = page.locator("button").last
|
||||
expect(submit_button).to_be_enabled(timeout=settings.default_timeout)
|
||||
submit_button.click()
|
||||
|
||||
logger.info("等待登录成功后出现退出按钮")
|
||||
logout_button = page.locator("aside button").first
|
||||
expect(logout_button).to_be_visible(timeout=settings.default_timeout)
|
||||
|
||||
logger.info("登录成功,停留 2 秒")
|
||||
page.wait_for_timeout(2_000)
|
||||
|
||||
logger.info("点击 Logout 退出登录")
|
||||
logout_button.click()
|
||||
|
||||
logger.info("校验退出登录成功后重新出现登录入口")
|
||||
expect(page.locator("aside button").first).to_be_visible(timeout=settings.default_timeout)
|
||||
|
||||
logger.info("退出登录成功,停留 3 秒")
|
||||
page.wait_for_timeout(3_000)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(pytest.main([str(Path(__file__))]))
|
||||
Reference in New Issue
Block a user