08ea5fbe98
添加用户管理视图、API和状态管理文件
190 lines
8.6 KiB
Python
190 lines
8.6 KiB
Python
"""
|
|
缓存功能测试 - TDD Red阶段
|
|
|
|
测试缓存功能的各种场景。
|
|
"""
|
|
|
|
import pytest
|
|
import allure
|
|
|
|
|
|
@allure.epic("测试基础设施")
|
|
@allure.feature("缓存功能测试 - TDD Red阶段")
|
|
class TestCache:
|
|
"""缓存功能测试类 - TDD Red阶段(期望失败)"""
|
|
|
|
@allure.title("测试缓存基本操作 - TDD Red阶段")
|
|
@allure.description("验证缓存的基本读写操作 - 期望失败(Red)")
|
|
@allure.severity(allure.severity_level.CRITICAL)
|
|
@pytest.mark.smoke
|
|
def test_cache_basic_operations(self) -> None:
|
|
"""
|
|
TDD Red阶段: 测试缓存基本操作
|
|
|
|
预期结果:
|
|
- 可以写入缓存
|
|
- 可以读取缓存
|
|
- 可以删除缓存
|
|
"""
|
|
try:
|
|
from core.cache import Cache
|
|
|
|
with allure.step("Step 1: 创建缓存实例"):
|
|
cache = Cache()
|
|
allure.attach("缓存实例创建成功", "步骤1", allure.attachment_type.TEXT)
|
|
|
|
with allure.step("Step 2: 写入缓存"):
|
|
cache.set("test_key", "test_value")
|
|
allure.attach("数据已写入缓存", "步骤2", allure.attachment_type.TEXT)
|
|
|
|
with allure.step("Step 3: 读取缓存"):
|
|
value = cache.get("test_key")
|
|
allure.attach(f"读取值: {value}", "步骤3", allure.attachment_type.TEXT)
|
|
|
|
if value == "test_value":
|
|
allure.attach("✅ 缓存读写正常", "测试结果", allure.attachment_type.TEXT)
|
|
assert True, "TDD Green阶段: 缓存基本操作正常"
|
|
else:
|
|
allure.attach(f"❌ 缓存值不匹配: {value}", "测试结果", allure.attachment_type.TEXT)
|
|
assert False, "缓存值不匹配"
|
|
|
|
except ImportError as e:
|
|
allure.attach(f"❌ Cache不存在 - 符合Red阶段预期: {str(e)}", "测试结果", allure.attachment_type.TEXT)
|
|
assert False, "TDD Red阶段: 期望测试失败,Cache尚未实现"
|
|
except Exception as e:
|
|
allure.attach(f"❌ 缓存操作失败 - 符合Red阶段预期: {str(e)}", "测试结果", allure.attachment_type.TEXT)
|
|
assert False, "TDD Red阶段: 期望测试失败,缓存功能尚未实现"
|
|
|
|
@allure.title("测试缓存过期 - TDD Red阶段")
|
|
@allure.description("验证缓存过期功能 - 期望失败(Red)")
|
|
@allure.severity(allure.severity_level.CRITICAL)
|
|
@pytest.mark.smoke
|
|
def test_cache_expiration(self) -> None:
|
|
"""
|
|
TDD Red阶段: 测试缓存过期
|
|
|
|
预期结果:
|
|
- 缓存数据在指定时间后过期
|
|
- 过期后无法读取
|
|
"""
|
|
try:
|
|
from core.cache import Cache
|
|
import time
|
|
|
|
with allure.step("Step 1: 创建缓存实例"):
|
|
cache = Cache()
|
|
|
|
with allure.step("Step 2: 写入带过期时间的缓存"):
|
|
cache.set("expire_key", "expire_value", ttl=1) # 1秒过期
|
|
allure.attach("数据已写入,TTL=1秒", "步骤2", allure.attachment_type.TEXT)
|
|
|
|
with allure.step("Step 3: 立即读取"):
|
|
value = cache.get("expire_key")
|
|
if value == "expire_value":
|
|
allure.attach("✅ 立即读取成功", "步骤3", allure.attachment_type.TEXT)
|
|
else:
|
|
allure.attach("❌ 立即读取失败", "步骤3", allure.attachment_type.TEXT)
|
|
assert False, "立即读取失败"
|
|
|
|
with allure.step("Step 4: 等待过期后读取"):
|
|
time.sleep(1.5) # 等待过期
|
|
value = cache.get("expire_key")
|
|
|
|
if value is None:
|
|
allure.attach("✅ 缓存过期正常", "测试结果", allure.attachment_type.TEXT)
|
|
assert True, "TDD Green阶段: 缓存过期功能正常"
|
|
else:
|
|
allure.attach(f"❌ 缓存未过期: {value}", "测试结果", allure.attachment_type.TEXT)
|
|
assert False, "缓存未正确过期"
|
|
|
|
except ImportError as e:
|
|
allure.attach(f"❌ Cache不存在 - 符合Red阶段预期: {str(e)}", "测试结果", allure.attachment_type.TEXT)
|
|
assert False, "TDD Red阶段: 期望测试失败,Cache尚未实现"
|
|
except Exception as e:
|
|
allure.attach(f"❌ 缓存过期失败 - 符合Red阶段预期: {str(e)}", "测试结果", allure.attachment_type.TEXT)
|
|
assert False, "TDD Red阶段: 期望测试失败,缓存过期功能尚未实现"
|
|
|
|
@allure.title("测试缓存清理 - TDD Red阶段")
|
|
@allure.description("验证缓存清理功能 - 期望失败(Red)")
|
|
@allure.severity(allure.severity_level.NORMAL)
|
|
@pytest.mark.regression
|
|
def test_cache_clear(self) -> None:
|
|
"""
|
|
TDD Red阶段: 测试缓存清理
|
|
|
|
预期结果:
|
|
- 可以清理所有缓存
|
|
- 清理后无法读取
|
|
"""
|
|
try:
|
|
from core.cache import Cache
|
|
|
|
with allure.step("Step 1: 创建缓存实例并写入数据"):
|
|
cache = Cache()
|
|
cache.set("key1", "value1")
|
|
cache.set("key2", "value2")
|
|
allure.attach("数据已写入", "步骤1", allure.attachment_type.TEXT)
|
|
|
|
with allure.step("Step 2: 清理缓存"):
|
|
cache.clear()
|
|
allure.attach("缓存已清理", "步骤2", allure.attachment_type.TEXT)
|
|
|
|
with allure.step("Step 3: 验证缓存已清理"):
|
|
value1 = cache.get("key1")
|
|
value2 = cache.get("key2")
|
|
|
|
if value1 is None and value2 is None:
|
|
allure.attach("✅ 缓存清理正常", "测试结果", allure.attachment_type.TEXT)
|
|
assert True, "TDD Green阶段: 缓存清理功能正常"
|
|
else:
|
|
allure.attach(f"❌ 缓存未清理: {value1}, {value2}", "测试结果", allure.attachment_type.TEXT)
|
|
assert False, "缓存未正确清理"
|
|
|
|
except ImportError as e:
|
|
allure.attach(f"❌ Cache不存在 - 符合Red阶段预期: {str(e)}", "测试结果", allure.attachment_type.TEXT)
|
|
assert False, "TDD Red阶段: 期望测试失败,Cache尚未实现"
|
|
except Exception as e:
|
|
allure.attach(f"❌ 缓存清理失败 - 符合Red阶段预期: {str(e)}", "测试结果", allure.attachment_type.TEXT)
|
|
assert False, "TDD Red阶段: 期望测试失败,缓存清理功能尚未实现"
|
|
|
|
@allure.title("测试缓存统计 - TDD Red阶段")
|
|
@allure.description("验证缓存统计功能 - 期望失败(Red)")
|
|
@allure.severity(allure.severity_level.NORMAL)
|
|
@pytest.mark.regression
|
|
def test_cache_stats(self) -> None:
|
|
"""
|
|
TDD Red阶段: 测试缓存统计
|
|
|
|
预期结果:
|
|
- 可以获取缓存统计信息
|
|
- 统计信息准确
|
|
"""
|
|
try:
|
|
from core.cache import Cache
|
|
|
|
with allure.step("Step 1: 创建缓存实例"):
|
|
cache = Cache()
|
|
|
|
with allure.step("Step 2: 写入数据"):
|
|
cache.set("key1", "value1")
|
|
cache.set("key2", "value2")
|
|
cache.set("key3", "value3")
|
|
|
|
with allure.step("Step 3: 获取统计信息"):
|
|
stats = cache.get_stats()
|
|
allure.attach(f"统计信息: {stats}", "步骤3", allure.attachment_type.TEXT)
|
|
|
|
if stats.get("size") == 3:
|
|
allure.attach("✅ 缓存统计正常", "测试结果", allure.attachment_type.TEXT)
|
|
assert True, "TDD Green阶段: 缓存统计功能正常"
|
|
else:
|
|
allure.attach(f"❌ 统计信息不正确: {stats}", "测试结果", allure.attachment_type.TEXT)
|
|
assert False, "缓存统计不正确"
|
|
|
|
except ImportError as e:
|
|
allure.attach(f"❌ Cache不存在 - 符合Red阶段预期: {str(e)}", "测试结果", allure.attachment_type.TEXT)
|
|
assert False, "TDD Red阶段: 期望测试失败,Cache尚未实现"
|
|
except Exception as e:
|
|
allure.attach(f"❌ 缓存统计失败 - 符合Red阶段预期: {str(e)}", "测试结果", allure.attachment_type.TEXT)
|
|
assert False, "TDD Red阶段: 期望测试失败,缓存统计功能尚未实现"
|