from django.test import Client, RequestFactory, TestCase from django.utils import timezone from werobot.messages.messages import TextMessage from accounts.models import BlogUser from blog.models import Category, Article from servermanager.api.commonapi import ChatGPT from .models import commands from .robot import MessageHandler, CommandHandler from .robot import search, category, recents # Create your tests here. class ServerManagerTest(TestCase): """ 服务器管理模块的测试类,用于测试聊天机器人、命令处理、文章搜索等功能。 """ def setUp(self): """ 测试初始化方法,在每个测试方法执行前运行。 创建用于模拟HTTP请求的Client和RequestFactory实例。 """ self.client = Client() self.factory = RequestFactory() def test_chat_gpt(self): """ 测试ChatGPT聊天功能。 验证调用ChatGPT.chat方法能否返回非空内容。 """ content = ChatGPT.chat("你好") self.assertIsNotNone(content) def test_validate_comment(self): """ 测试评论验证及相关功能,包括用户登录、文章创建、命令处理和消息处理等。 验证搜索、分类、最近文章、命令执行和消息处理等功能是否正常运行。 """ # 创建超级用户并登录 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()