""" 黄历模块测试 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, "未切换回黄历"