You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
django/servermanager/tests.py

108 lines
3.3 KiB

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"
search(s, None) # 移除了未使用的变量赋值
# 测试分类功能
category_result = category(None, None) # 重命名变量以明确用途
self.assertIsNotNone(category_result)
# 测试最近文章功能
recent_result = recents(None, None) # 重命名变量以明确用途
self.assertTrue(recent_result != '暂时还没有文章')
# 创建并保存命令
cmd = commands()
cmd.title = "test"
cmd.command = "ls"
cmd.describe = "test"
cmd.save()
# 测试命令处理器
cmdhandler = CommandHandler()
cmd_result = cmdhandler.run('test') # 重命名变量以明确用途
self.assertIsNotNone(cmd_result)
# 测试消息处理器的各种场景
s.source = 'u'
s.content = 'test'
msghandler = MessageHandler(s, {})
# 删除了被注释掉的代码
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()