08ea5fbe98
添加用户管理视图、API和状态管理文件
294 lines
12 KiB
Python
294 lines
12 KiB
Python
"""
|
|
角色管理模块测试 - TDD迭代
|
|
|
|
Admin后台角色管理功能的测试用例。
|
|
"""
|
|
|
|
import pytest
|
|
import allure
|
|
from playwright.sync_api import Page
|
|
|
|
|
|
@allure.epic("Admin后台管理")
|
|
@allure.feature("角色管理模块")
|
|
class TestRoleManagement:
|
|
"""角色管理模块测试类 - TDD迭代"""
|
|
|
|
@allure.title("创建新角色测试 - TDD Red阶段")
|
|
@allure.description("验证可以成功创建新角色 - 期望失败(Red)")
|
|
@allure.severity(allure.severity_level.CRITICAL)
|
|
@pytest.mark.smoke
|
|
def test_create_role_success(self, authenticated_page: Page, role_management_page) -> None:
|
|
"""
|
|
TDD Red阶段: 编写创建角色测试 - 期望失败
|
|
|
|
前置条件:
|
|
- 管理员已登录
|
|
- 角色管理页面已加载
|
|
|
|
测试步骤:
|
|
1. 导航到角色管理页面
|
|
2. 点击"新建角色"按钮
|
|
3. 填写角色信息
|
|
4. 点击提交按钮
|
|
|
|
预期结果(Red阶段-期望失败):
|
|
- 测试应该失败,因为功能尚未实现
|
|
"""
|
|
import uuid
|
|
unique_id = str(uuid.uuid4())[:8]
|
|
|
|
with allure.step("Step 1: 导航到角色管理页面"):
|
|
role_management_page.navigate()
|
|
assert role_management_page.is_loaded(), "角色管理页面未加载完成"
|
|
allure.attach("页面已加载", "步骤1", allure.attachment_type.TEXT)
|
|
|
|
with allure.step("Step 2: 点击新建角色按钮"):
|
|
role_management_page.click_create_button()
|
|
assert role_management_page.is_dialog_visible(), "新建角色对话框未显示"
|
|
allure.attach("对话框已显示", "步骤2", allure.attachment_type.TEXT)
|
|
|
|
with allure.step("Step 3: 填写角色信息"):
|
|
role_name = f"测试角色_{unique_id}"
|
|
role_code = f"test_role_{unique_id}"
|
|
role_management_page.fill_form_name(role_name)
|
|
role_management_page.fill_form_code(role_code)
|
|
role_management_page.fill_form_description(f"这是一个测试角色,用于TDD迭代 - {unique_id}")
|
|
allure.attach(f"角色名称: {role_name}", "角色信息", allure.attachment_type.TEXT)
|
|
allure.attach(f"角色编码: {role_code}", "角色信息", allure.attachment_type.TEXT)
|
|
|
|
with allure.step("Step 4: 提交表单"):
|
|
role_management_page.click_form_submit()
|
|
allure.attach("表单已提交", "步骤4", allure.attachment_type.TEXT)
|
|
|
|
with allure.step("Step 5: 验证创建成功 - TDD Red阶段期望失败"):
|
|
# TDD Red阶段: 这个断言期望失败,因为功能尚未实现
|
|
# 当功能实现后(Green阶段),这个测试应该通过
|
|
success = role_management_page.has_success_message()
|
|
|
|
# 记录测试结果
|
|
if success:
|
|
allure.attach("✅ 角色创建成功", "测试结果", allure.attachment_type.TEXT)
|
|
else:
|
|
allure.attach("❌ 角色创建失败 - 符合Red阶段预期", "测试结果", allure.attachment_type.TEXT)
|
|
|
|
# TDD Red阶段: 我们期望这个测试失败
|
|
# 在Green阶段实现功能后,这个断言应该通过
|
|
assert success, "TDD Red阶段: 期望测试失败,因为角色创建功能尚未实现"
|
|
|
|
@allure.title("角色列表加载测试")
|
|
@allure.description("验证角色管理页面可以正常加载并显示角色列表")
|
|
@allure.severity(allure.severity_level.CRITICAL)
|
|
@pytest.mark.smoke
|
|
def test_role_list_load(self, authenticated_page: Page, role_management_page) -> None:
|
|
"""
|
|
测试角色列表加载
|
|
|
|
前置条件:
|
|
- 管理员已登录
|
|
|
|
测试步骤:
|
|
1. 导航到角色管理页面
|
|
2. 等待表格加载
|
|
|
|
预期结果:
|
|
- 角色表格可见
|
|
- 表格包含角色数据
|
|
"""
|
|
with allure.step("导航到角色管理页面"):
|
|
role_management_page.navigate()
|
|
assert role_management_page.is_loaded(), "角色管理页面未加载完成"
|
|
|
|
with allure.step("验证表格加载"):
|
|
role_management_page.wait_for_table_load()
|
|
row_count = role_management_page.get_table_rows_count()
|
|
assert row_count >= 0, "表格行数异常"
|
|
allure.attach(f"表格行数: {row_count}", "表格统计", allure.attachment_type.TEXT)
|
|
|
|
@allure.title("编辑角色测试 - TDD Red阶段")
|
|
@allure.description("验证可以成功编辑角色信息 - 期望失败(Red)")
|
|
@allure.severity(allure.severity_level.CRITICAL)
|
|
@pytest.mark.smoke
|
|
def test_edit_role_success(self, authenticated_page: Page, role_management_page) -> None:
|
|
"""
|
|
TDD Red阶段: 编写编辑角色测试 - 期望失败
|
|
|
|
前置条件:
|
|
- 管理员已登录
|
|
- 存在测试角色
|
|
|
|
测试步骤:
|
|
1. 找到测试角色
|
|
2. 点击编辑按钮
|
|
3. 修改角色信息
|
|
4. 点击提交按钮
|
|
|
|
预期结果(Red阶段-期望失败):
|
|
- 测试应该失败,因为功能尚未实现
|
|
"""
|
|
import uuid
|
|
unique_id = str(uuid.uuid4())[:8]
|
|
|
|
with allure.step("导航到角色管理页面"):
|
|
role_management_page.navigate()
|
|
assert role_management_page.is_loaded(), "角色管理页面未加载完成"
|
|
role_management_page.wait_for_table_load()
|
|
|
|
with allure.step("点击第一行的编辑按钮"):
|
|
if role_management_page.get_table_rows_count() > 0:
|
|
role_management_page.click_row_edit(0)
|
|
assert role_management_page.is_dialog_visible(), "编辑对话框未显示"
|
|
else:
|
|
pytest.skip("没有可编辑的角色数据")
|
|
|
|
with allure.step("修改角色信息"):
|
|
role_management_page.fill_form_name(f"修改后的角色_{unique_id}")
|
|
role_management_page.fill_form_description(f"修改后的描述_{unique_id}")
|
|
|
|
with allure.step("提交表单"):
|
|
role_management_page.click_form_submit()
|
|
|
|
with allure.step("验证编辑成功 - TDD Red阶段期望失败"):
|
|
success = role_management_page.has_success_message()
|
|
|
|
if success:
|
|
allure.attach("✅ 角色编辑成功", "测试结果", allure.attachment_type.TEXT)
|
|
else:
|
|
allure.attach("❌ 角色编辑失败 - 符合Red阶段预期", "测试结果", allure.attachment_type.TEXT)
|
|
|
|
# TDD Red阶段: 期望测试失败
|
|
assert success, "TDD Red阶段: 期望测试失败,因为角色编辑功能尚未实现"
|
|
|
|
@allure.title("删除角色测试 - TDD Red阶段")
|
|
@allure.description("验证可以成功删除角色 - 期望失败(Red)")
|
|
@allure.severity(allure.severity_level.CRITICAL)
|
|
@pytest.mark.smoke
|
|
def test_delete_role_success(self, authenticated_page: Page, role_management_page) -> None:
|
|
"""
|
|
TDD Red阶段: 编写删除角色测试 - 期望失败
|
|
|
|
前置条件:
|
|
- 管理员已登录
|
|
- 存在可删除的测试角色
|
|
|
|
测试步骤:
|
|
1. 找到测试角色
|
|
2. 点击删除按钮
|
|
3. 确认删除
|
|
|
|
预期结果(Red阶段-期望失败):
|
|
- 测试应该失败,因为功能尚未实现
|
|
"""
|
|
with allure.step("导航到角色管理页面"):
|
|
role_management_page.navigate()
|
|
assert role_management_page.is_loaded(), "角色管理页面未加载完成"
|
|
role_management_page.wait_for_table_load()
|
|
|
|
with allure.step("点击第一行的删除按钮"):
|
|
if role_management_page.get_table_rows_count() > 0:
|
|
role_management_page.click_row_delete(0)
|
|
else:
|
|
pytest.skip("没有可删除的角色数据")
|
|
|
|
with allure.step("确认删除"):
|
|
role_management_page.confirm_delete()
|
|
|
|
with allure.step("验证删除成功 - TDD Red阶段期望失败"):
|
|
success = role_management_page.has_success_message()
|
|
|
|
if success:
|
|
allure.attach("✅ 角色删除成功", "测试结果", allure.attachment_type.TEXT)
|
|
else:
|
|
allure.attach("❌ 角色删除失败 - 符合Red阶段预期", "测试结果", allure.attachment_type.TEXT)
|
|
|
|
# TDD Red阶段: 期望测试失败
|
|
assert success, "TDD Red阶段: 期望测试失败,因为角色删除功能尚未实现"
|
|
|
|
@allure.title("角色搜索功能测试")
|
|
@allure.description("验证角色搜索功能正常工作")
|
|
@allure.severity(allure.severity_level.NORMAL)
|
|
@pytest.mark.regression
|
|
def test_role_search(self, authenticated_page: Page, role_management_page) -> None:
|
|
"""
|
|
测试角色搜索功能
|
|
|
|
前置条件:
|
|
- 管理员已登录
|
|
|
|
测试步骤:
|
|
1. 导航到角色管理页面
|
|
2. 输入搜索关键词
|
|
3. 点击搜索按钮
|
|
|
|
预期结果:
|
|
- 搜索结果正确显示
|
|
"""
|
|
with allure.step("导航到角色管理页面"):
|
|
role_management_page.navigate()
|
|
assert role_management_page.is_loaded(), "角色管理页面未加载完成"
|
|
|
|
with allure.step("搜索角色"):
|
|
role_management_page.fill_search("admin")
|
|
role_management_page.click_search()
|
|
role_management_page.wait_for_table_load()
|
|
|
|
with allure.step("验证搜索结果"):
|
|
row_count = role_management_page.get_table_rows_count()
|
|
allure.attach(f"搜索结果行数: {row_count}", "搜索结果", allure.attachment_type.TEXT)
|
|
assert row_count >= 0, "搜索结果异常"
|
|
|
|
@allure.title("角色权限分配测试 - TDD Red阶段")
|
|
@allure.description("验证可以为角色分配权限 - 期望失败(Red)")
|
|
@allure.severity(allure.severity_level.CRITICAL)
|
|
@pytest.mark.smoke
|
|
def test_role_permission_assignment(self, authenticated_page: Page, role_management_page) -> None:
|
|
"""
|
|
TDD Red阶段: 编写权限分配测试 - 期望失败
|
|
|
|
前置条件:
|
|
- 管理员已登录
|
|
- 存在测试角色
|
|
|
|
测试步骤:
|
|
1. 找到测试角色
|
|
2. 点击编辑按钮
|
|
3. 勾选权限
|
|
4. 点击提交按钮
|
|
|
|
预期结果(Red阶段-期望失败):
|
|
- 测试应该失败,因为功能尚未实现
|
|
"""
|
|
with allure.step("导航到角色管理页面"):
|
|
role_management_page.navigate()
|
|
assert role_management_page.is_loaded(), "角色管理页面未加载完成"
|
|
role_management_page.wait_for_table_load()
|
|
|
|
with allure.step("点击第一行的编辑按钮"):
|
|
if role_management_page.get_table_rows_count() > 0:
|
|
role_management_page.click_row_edit(0)
|
|
assert role_management_page.is_dialog_visible(), "编辑对话框未显示"
|
|
else:
|
|
pytest.skip("没有可编辑的角色数据")
|
|
|
|
with allure.step("勾选权限"):
|
|
# 尝试勾选第一个权限
|
|
try:
|
|
role_management_page.check_permission("用户管理")
|
|
allure.attach("已勾选权限", "权限分配", allure.attachment_type.TEXT)
|
|
except Exception as e:
|
|
allure.attach(f"权限勾选失败: {str(e)}", "权限分配", allure.attachment_type.TEXT)
|
|
|
|
with allure.step("提交表单"):
|
|
role_management_page.click_form_submit()
|
|
|
|
with allure.step("验证权限分配成功 - TDD Red阶段期望失败"):
|
|
success = role_management_page.has_success_message()
|
|
|
|
if success:
|
|
allure.attach("✅ 权限分配成功", "测试结果", allure.attachment_type.TEXT)
|
|
else:
|
|
allure.attach("❌ 权限分配失败 - 符合Red阶段预期", "测试结果", allure.attachment_type.TEXT)
|
|
|
|
# TDD Red阶段: 期望测试失败
|
|
assert success, "TDD Red阶段: 期望测试失败,因为权限分配功能尚未实现"
|