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.
108 lines
3.3 KiB
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()
|