Files
everything-is-suitable/everything-is-suitable-test/python_e2e/tests/uniapp/test_almanac.py
T
张翔 08ea5fbe98 feat(admin): 添加用户管理相关文件
添加用户管理视图、API和状态管理文件
2026-03-28 14:37:29 +08:00

272 lines
9.5 KiB
Python

"""
黄历模块测试
Uniapp黄历功能的测试用例。
"""
import pytest
import allure
from playwright.sync_api import Page
@allure.epic("Uniapp客户端")
@allure.feature("黄历模块")
class TestAlmanac:
"""黄历模块测试类"""
@allure.title("黄历页面加载测试")
@allure.description("验证黄历页面可以正常加载")
@allure.severity(allure.severity_level.CRITICAL)
@pytest.mark.smoke
def test_almanac_page_load(self, almanac_page) -> None:
"""
测试黄历页面加载
前置条件:
- Uniapp服务已启动
测试步骤:
1. 导航到黄历页面
2. 等待页面加载
预期结果:
- 页面标题可见
- 日期显示区域可见
- 宜忌事项区域可见
"""
with allure.step("导航到黄历页面"):
almanac_page.navigate()
assert almanac_page.is_loaded(), "黄历页面未加载完成"
with allure.step("验证页面元素"):
assert almanac_page.has_yi_section(), "宜事项区域未显示"
assert almanac_page.has_ji_section(), "忌事项区域未显示"
@allure.title("日期显示测试")
@allure.description("验证黄历页面正确显示日期信息")
@allure.severity(allure.severity_level.CRITICAL)
@pytest.mark.smoke
def test_date_display(self, almanac_page) -> None:
"""
测试日期显示
前置条件:
- 黄历页面已加载
测试步骤:
1. 查看公历日期显示
2. 查看农历日期显示
3. 查看干支信息
4. 查看生肖信息
预期结果:
- 公历日期正确
- 农历日期正确
- 干支信息完整
- 生肖信息正确
"""
with allure.step("导航到黄历页面"):
almanac_page.navigate()
almanac_page.wait_for_data_load()
with allure.step("验证日期信息"):
solar_date = almanac_page.get_solar_date()
lunar_date = almanac_page.get_lunar_date()
ganzhi = almanac_page.get_ganzhi()
shengxiao = almanac_page.get_shengxiao()
allure.attach(f"公历: {solar_date}", "日期信息", allure.attachment_type.TEXT)
allure.attach(f"农历: {lunar_date}", "日期信息", allure.attachment_type.TEXT)
allure.attach(f"干支: {ganzhi}", "日期信息", allure.attachment_type.TEXT)
allure.attach(f"生肖: {shengxiao}", "日期信息", allure.attachment_type.TEXT)
assert solar_date, "公历日期未显示"
assert lunar_date, "农历日期未显示"
assert ganzhi, "干支信息未显示"
assert shengxiao, "生肖信息未显示"
@allure.title("宜忌事项显示测试")
@allure.description("验证黄历页面正确显示宜忌事项")
@allure.severity(allure.severity_level.CRITICAL)
@pytest.mark.smoke
def test_yi_ji_display(self, almanac_page) -> None:
"""
测试宜忌事项显示
前置条件:
- 黄历页面已加载
测试步骤:
1. 查看宜事项列表
2. 查看忌事项列表
预期结果:
- 宜事项列表可见
- 忌事项列表可见
- 事项内容不为空
"""
with allure.step("导航到黄历页面"):
almanac_page.navigate()
almanac_page.wait_for_data_load()
with allure.step("验证宜忌事项"):
yi_items = almanac_page.get_yi_items()
ji_items = almanac_page.get_ji_items()
allure.attach(f"宜事项数量: {len(yi_items)}", "宜忌统计", allure.attachment_type.TEXT)
allure.attach(f"忌事项数量: {len(ji_items)}", "宜忌统计", allure.attachment_type.TEXT)
# 宜忌事项应该存在(可能为空列表,但应该有区域)
assert almanac_page.get_yi_count() >= 0, "宜事项区域异常"
assert almanac_page.get_ji_count() >= 0, "忌事项区域异常"
@allure.title("日期切换功能测试")
@allure.description("验证日期切换功能正常工作")
@allure.severity(allure.severity_level.CRITICAL)
@pytest.mark.smoke
def test_date_switch(self, almanac_page) -> None:
"""
测试日期切换功能
前置条件:
- 黄历页面已加载
测试步骤:
1. 点击前一天按钮
2. 验证日期变化
3. 点击后一天按钮
4. 验证日期变化
预期结果:
- 日期正确切换
- 黄历信息更新
"""
with allure.step("导航到黄历页面"):
almanac_page.navigate()
almanac_page.wait_for_data_load()
with allure.step("获取当前日期"):
initial_date = almanac_page.get_solar_date()
allure.attach(f"初始日期: {initial_date}", "日期切换", allure.attachment_type.TEXT)
with allure.step("点击前一天"):
almanac_page.click_prev_date()
almanac_page.wait_for_data_load()
prev_date = almanac_page.get_solar_date()
allure.attach(f"前一天: {prev_date}", "日期切换", allure.attachment_type.TEXT)
with allure.step("点击后一天"):
almanac_page.click_next_date()
almanac_page.wait_for_data_load()
next_date = almanac_page.get_solar_date()
allure.attach(f"后一天: {next_date}", "日期切换", allure.attachment_type.TEXT)
with allure.step("验证日期切换"):
# 验证日期有变化
assert prev_date != initial_date or next_date != initial_date, "日期切换未生效"
@allure.title("时辰吉凶显示测试")
@allure.description("验证时辰吉凶信息正确显示")
@allure.severity(allure.severity_level.NORMAL)
@pytest.mark.regression
def test_shichen_display(self, almanac_page) -> None:
"""
测试时辰吉凶显示
前置条件:
- 黄历页面已加载
测试步骤:
1. 查看时辰吉凶表格
2. 验证时辰数量
预期结果:
- 时辰表格可见
- 时辰数量正确(12个时辰)
"""
with allure.step("导航到黄历页面"):
almanac_page.navigate()
almanac_page.wait_for_data_load()
with allure.step("验证时辰信息"):
shichen_count = almanac_page.get_shichen_count()
allure.attach(f"时辰数量: {shichen_count}", "时辰统计", allure.attachment_type.TEXT)
# 应该有12个时辰(或根据实际数据)
assert shichen_count >= 0, "时辰信息异常"
@allure.title("其他信息展示测试")
@allure.description("验证其他黄历信息正确显示")
@allure.severity(allure.severity_level.NORMAL)
@pytest.mark.regression
def test_other_info_display(self, almanac_page) -> None:
"""
测试其他信息展示
前置条件:
- 黄历页面已加载
测试步骤:
1. 查看冲煞信息
2. 查看五行信息
3. 查看胎神信息
4. 查看财神方位
预期结果:
- 所有信息正确显示
"""
with allure.step("导航到黄历页面"):
almanac_page.navigate()
almanac_page.wait_for_data_load()
with allure.step("验证其他信息"):
chongsha = almanac_page.get_chongsha()
wuxing = almanac_page.get_wuxing()
taishen = almanac_page.get_taishen()
caishen = almanac_page.get_caishen()
allure.attach(f"冲煞: {chongsha}", "其他信息", allure.attachment_type.TEXT)
allure.attach(f"五行: {wuxing}", "其他信息", allure.attachment_type.TEXT)
allure.attach(f"胎神: {taishen}", "其他信息", allure.attachment_type.TEXT)
allure.attach(f"财神: {caishen}", "其他信息", allure.attachment_type.TEXT)
# 信息应该存在(可能为空字符串,但应该有元素)
assert chongsha is not None, "冲煞信息异常"
assert wuxing is not None, "五行信息异常"
assert taishen is not None, "胎神信息异常"
assert caishen is not None, "财神信息异常"
@allure.title("Tab切换功能测试")
@allure.description("验证底部Tab切换功能正常")
@allure.severity(allure.severity_level.NORMAL)
@pytest.mark.regression
def test_tab_switch(self, almanac_page, page: Page) -> None:
"""
测试Tab切换功能
前置条件:
- 黄历页面已加载
测试步骤:
1. 点击万年历Tab
2. 点击黄历Tab
3. 点击我的Tab
预期结果:
- Tab切换正常
- 页面内容更新
"""
with allure.step("导航到黄历页面"):
almanac_page.navigate()
almanac_page.wait_for_data_load()
with allure.step("切换到万年历Tab"):
almanac_page.click_tab_calendar()
# 验证URL变化
assert "calendar" in page.url or "/pages/calendar" in page.url, "未切换到万年历"
with allure.step("切换回黄历Tab"):
almanac_page.click_tab_almanac()
# 验证URL变化
assert "almanac" in page.url or "/pages/almanac" in page.url, "未切换回黄历"