Update tests.py

master
zxc 4 months ago
parent 8e224aab0e
commit 1a1515649c

@ -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()

Loading…
Cancel
Save