diff --git a/src/DjangoBlog-master/servermanager/tests.py b/src/DjangoBlog-master/servermanager/tests.py index 22a6689..88b3a86 100644 --- a/src/DjangoBlog-master/servermanager/tests.py +++ b/src/DjangoBlog-master/servermanager/tests.py @@ -1,6 +1,6 @@ from django.test import Client, RequestFactory, TestCase from django.utils import timezone -from werobot.messages.messages import TextMessage +from werobot.messages.messages.messages import TextMessage from accounts.models import BlogUser from blog.models import Category, Article @@ -12,68 +12,100 @@ from .robot import search, category, recents # Create your tests here. class ServerManagerTest(TestCase): + """测试servermanager应用的核心功能,包括ChatGPT调用、文章查询、命令执行和消息处理逻辑""" + def setUp(self): - self.client = Client() - self.factory = RequestFactory() + """测试前的初始化工作:创建测试客户端、请求工厂,为后续测试准备基础数据""" + self.client = Client() # Django测试客户端,用于模拟HTTP请求 + self.factory = RequestFactory() # 请求工厂,用于构建测试请求对象 def test_chat_gpt(self): - content = ChatGPT.chat("你好") - self.assertIsNotNone(content) + """测试ChatGPT接口调用是否正常返回结果""" + content = ChatGPT.chat("你好") # 调用ChatGPT发送简单问候 + self.assertIsNotNone(content) # 断言返回结果不为空(验证接口可用) def test_validate_comment(self): + """综合测试:文章搜索、分类查询、命令执行、消息处理器等功能""" + # 1. 创建测试用户(超级管理员)并登录 user = BlogUser.objects.create_superuser( email="liangliangyy1@gmail.com", username="liangliangyy1", - password="liangliangyy1") - - self.client.login(username='liangliangyy1', password='liangliangyy1') - - c = Category() - c.name = "categoryccc" - c.save() - - article = Article() - article.title = "nicetitleccc" - article.body = "nicecontentccc" - article.author = user - article.category = c - article.type = 'a' - article.status = 'p' - article.save() - s = TextMessage([]) - s.content = "nice" - rsp = search(s, None) - rsp = category(None, None) - self.assertIsNotNone(rsp) - rsp = recents(None, None) - self.assertTrue(rsp != '暂时还没有文章') - - cmd = commands() - cmd.title = "test" - cmd.command = "ls" - cmd.describe = "test" - cmd.save() - - cmdhandler = CommandHandler() - rsp = cmdhandler.run('test') - self.assertIsNotNone(rsp) - s.source = 'u' - s.content = 'test' - msghandler = MessageHandler(s, {}) - - # msghandler.userinfo.isPasswordSet = True - # msghandler.userinfo.isAdmin = True - msghandler.handler() - s.content = 'y' - msghandler.handler() - s.content = 'idcard:12321233' - msghandler.handler() - s.content = 'weather:上海' - msghandler.handler() - s.content = 'admin' - msghandler.handler() - s.content = '123' - msghandler.handler() - - s.content = 'exit' - msghandler.handler() + password="liangliangyy1" + ) + self.client.login(username='liangliangyy1', password='liangliangyy1') # 模拟登录 + + # 2. 创建测试分类和文章(用于后续搜索、分类查询测试) + test_category = Category(name="categoryccc") + test_category.save() # 保存分类到数据库 + + test_article = Article( + title="nicetitleccc", + body="nicecontentccc", + author=user, + category=test_category, + type='a', # 假设'a'表示文章类型 + status='p' # 假设'p'表示已发布 + ) + test_article.save() # 保存文章到数据库 + + # 3. 测试文章搜索功能 + # 创建模拟文本消息(内容为"nice",用于搜索) + search_msg = TextMessage([]) + search_msg.content = "nice" + search_rsp = search(search_msg, None) # 调用搜索函数 + # (此处未断言搜索结果,因实际结果依赖搜索配置,仅验证无异常) + + # 4. 测试分类查询功能 + category_rsp = category(None, None) # 调用分类查询函数 + self.assertIsNotNone(category_rsp) # 断言返回结果不为空 + + # 5. 测试最新文章查询功能 + recents_rsp = recents(None, None) # 调用最新文章查询函数 + self.assertTrue(recents_rsp != '暂时还没有文章') # 断言返回结果不是"无文章"提示 + + # 6. 测试命令执行功能 + # 创建测试命令 + test_cmd = commands( + title="test", + command="ls", # 简单的系统命令(列出目录内容) + describe="test" + ) + test_cmd.save() # 保存命令到数据库 + + cmd_handler = CommandHandler() + cmd_rsp = cmd_handler.run('test') # 执行"test"命令 + self.assertIsNotNone(cmd_rsp) # 断言命令执行结果不为空 + + # 7. 测试消息处理器(MessageHandler)的各种场景 + # 模拟用户消息(来源为'u',内容为'test') + msg = TextMessage([]) + msg.source = 'u' + msg.content = 'test' + msg_handler = MessageHandler(msg, {}) # 初始化消息处理器(空会话) + + # 7.1 测试普通消息处理(非管理员模式) + msg_handler.handler() # 处理内容为'test'的消息 + + # 7.2 测试命令确认(假设已处于管理员模式,输入'y'确认执行) + msg.content = 'y' + msg_handler.handler() + + # 7.3 测试待开发功能(身份证查询) + msg.content = 'idcard:12321233' + msg_handler.handler() + + # 7.4 测试待开发功能(天气查询) + msg.content = 'weather:上海' + msg_handler.handler() + + # 7.5 测试进入管理员模式(输入'admin') + msg.content = 'admin' + msg_handler.handler() + + # 7.6 测试管理员密码验证(输入'123') + msg.content = '123' + msg_handler.handler() + + # 7.7 测试退出管理员模式(输入'exit') + msg.content = 'exit' + msg_handler.handler()