185 lines
5.6 KiB
Python
185 lines
5.6 KiB
Python
"""
|
|
通知公告测试用例
|
|
"""
|
|
|
|
import pytest
|
|
import time
|
|
from api.notice_api import SysNoticeAPI, SysMessageAPI
|
|
|
|
|
|
@pytest.mark.notice
|
|
@pytest.mark.regression
|
|
class TestSysNotice:
|
|
"""系统公告测试类"""
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_create_notice_success(self, authenticated_client):
|
|
"""测试创建公告成功"""
|
|
api = SysNoticeAPI(authenticated_client)
|
|
timestamp = int(time.time() * 1000)
|
|
data = {
|
|
"noticeTitle": f"测试公告_{timestamp}",
|
|
"noticeType": "1",
|
|
"noticeContent": "这是测试公告内容",
|
|
"status": "0"
|
|
}
|
|
|
|
response = await api.create(data)
|
|
|
|
assert response.status_code == 201
|
|
result = response.json()
|
|
assert result["noticeTitle"] == data["noticeTitle"]
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_get_all_notices(self, authenticated_client):
|
|
"""测试获取所有公告"""
|
|
api = SysNoticeAPI(authenticated_client)
|
|
|
|
response = await api.get_all()
|
|
|
|
assert response.status_code == 200
|
|
assert isinstance(response.json(), list)
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_get_notice_by_id(self, authenticated_client):
|
|
"""测试根据ID获取公告"""
|
|
api = SysNoticeAPI(authenticated_client)
|
|
timestamp = int(time.time() * 1000)
|
|
data = {
|
|
"noticeTitle": f"测试公告_{timestamp}",
|
|
"noticeType": "1",
|
|
"noticeContent": "测试内容",
|
|
"status": "0"
|
|
}
|
|
create_response = await api.create(data)
|
|
notice_id = create_response.json()["id"]
|
|
|
|
response = await api.get_by_id(notice_id)
|
|
|
|
assert response.status_code == 200
|
|
assert response.json()["id"] == notice_id
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_get_notice_by_status(self, authenticated_client):
|
|
"""测试根据状态获取公告"""
|
|
api = SysNoticeAPI(authenticated_client)
|
|
timestamp = int(time.time() * 1000)
|
|
data = {
|
|
"noticeTitle": f"测试公告_{timestamp}",
|
|
"noticeType": "1",
|
|
"noticeContent": "测试内容",
|
|
"status": "0"
|
|
}
|
|
await api.create(data)
|
|
|
|
response = await api.get_by_status("0")
|
|
|
|
assert response.status_code == 200
|
|
assert isinstance(response.json(), list)
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_update_notice(self, authenticated_client):
|
|
"""测试更新公告"""
|
|
api = SysNoticeAPI(authenticated_client)
|
|
timestamp = int(time.time() * 1000)
|
|
data = {
|
|
"noticeTitle": f"测试公告_{timestamp}",
|
|
"noticeType": "1",
|
|
"noticeContent": "原始内容",
|
|
"status": "0"
|
|
}
|
|
create_response = await api.create(data)
|
|
notice_id = create_response.json()["id"]
|
|
|
|
update_data = {
|
|
"noticeTitle": f"更新后_{timestamp}",
|
|
"noticeType": "1",
|
|
"noticeContent": "更新后内容",
|
|
"status": "0"
|
|
}
|
|
response = await api.update(notice_id, update_data)
|
|
|
|
assert response.status_code == 200
|
|
assert response.json()["noticeTitle"] == f"更新后_{timestamp}"
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_delete_notice(self, authenticated_client):
|
|
"""测试删除公告"""
|
|
api = SysNoticeAPI(authenticated_client)
|
|
timestamp = int(time.time() * 1000)
|
|
data = {
|
|
"noticeTitle": f"测试公告_{timestamp}",
|
|
"noticeType": "1",
|
|
"noticeContent": "测试内容",
|
|
"status": "0"
|
|
}
|
|
create_response = await api.create(data)
|
|
notice_id = create_response.json()["id"]
|
|
|
|
response = await api.delete(notice_id)
|
|
|
|
assert response.status_code == 204
|
|
|
|
|
|
@pytest.mark.notice
|
|
@pytest.mark.regression
|
|
class TestSysMessage:
|
|
"""用户消息测试类"""
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_create_message(self, authenticated_client):
|
|
"""测试创建消息"""
|
|
api = SysMessageAPI(authenticated_client)
|
|
timestamp = int(time.time() * 1000)
|
|
data = {
|
|
"userId": 1,
|
|
"title": f"测试消息_{timestamp}",
|
|
"content": "这是测试消息内容",
|
|
"type": "1"
|
|
}
|
|
|
|
response = await api.create(data)
|
|
|
|
assert response.status_code == 201
|
|
result = response.json()
|
|
assert result["title"] == data["title"]
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_get_messages_by_user(self, authenticated_client):
|
|
"""测试获取用户消息"""
|
|
api = SysMessageAPI(authenticated_client)
|
|
user_id = 1
|
|
|
|
response = await api.get_by_user(user_id)
|
|
|
|
assert response.status_code == 200
|
|
assert isinstance(response.json(), list)
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_get_unread_count(self, authenticated_client):
|
|
"""测试获取未读消息数量"""
|
|
api = SysMessageAPI(authenticated_client)
|
|
user_id = 1
|
|
|
|
response = await api.get_unread_count(user_id)
|
|
|
|
assert response.status_code == 200
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_mark_message_as_read(self, authenticated_client):
|
|
"""测试标记消息为已读"""
|
|
api = SysMessageAPI(authenticated_client)
|
|
timestamp = int(time.time() * 1000)
|
|
data = {
|
|
"userId": 1,
|
|
"title": f"测试消息_{timestamp}",
|
|
"content": "测试内容",
|
|
"type": "1"
|
|
}
|
|
create_response = await api.create(data)
|
|
message_id = create_response.json()["id"]
|
|
|
|
response = await api.mark_as_read(message_id)
|
|
|
|
assert response.status_code == 200
|