|
|
|
|
@ -0,0 +1,83 @@
|
|
|
|
|
# 导入json模块用于处理JSON数据 #zqx: 引入json模块,用于处理JSON格式数据的编码和解码
|
|
|
|
|
import json
|
|
|
|
|
|
|
|
|
|
# 从Django测试模块导入测试客户端、请求工厂和测试用例基类 #zqx: 从django.test导入Client(测试客户端)、RequestFactory(请求工厂)和TestCase(测试用例基类)
|
|
|
|
|
from django.test import Client, RequestFactory, TestCase
|
|
|
|
|
|
|
|
|
|
# 从accounts应用导入BlogUser模型 #zqx: 从accounts应用的models模块导入BlogUser用户模型
|
|
|
|
|
from accounts.models import BlogUser
|
|
|
|
|
# 从当前应用导入OwnTrackLog模型 #zqx: 从当前应用(.)的models模块导入OwnTrackLog模型
|
|
|
|
|
from .models import OwnTrackLog
|
|
|
|
|
|
|
|
|
|
# Create your tests here. #zqx: Django测试文件的标准注释,标记测试代码区域开始
|
|
|
|
|
|
|
|
|
|
# 定义OwnTrackLogTest测试类,继承自Django的TestCase #zqx: 定义OwnTrackLogTest测试类,继承Django的TestCase类,用于测试OwnTrackLog相关功能
|
|
|
|
|
class OwnTrackLogTest(TestCase):
|
|
|
|
|
# 测试初始化方法,在每个测试方法执行前运行 #zqx: setUp方法,在每个测试方法执行前自动调用,用于初始化测试环境
|
|
|
|
|
def setUp(self):
|
|
|
|
|
# 创建测试客户端实例 #zqx: 创建Client实例,用于模拟HTTP请求
|
|
|
|
|
self.client = Client()
|
|
|
|
|
# 创建请求工厂实例 #zqx: 创建RequestFactory实例,用于创建测试请求对象
|
|
|
|
|
self.factory = RequestFactory()
|
|
|
|
|
|
|
|
|
|
# 测试owntracks功能的主要测试方法 #zqx: 定义test_own_track_log测试方法,用于测试owntracks功能
|
|
|
|
|
def test_own_track_log(self):
|
|
|
|
|
# 创建包含完整位置信息的测试数据 #zqx: 创建包含tid、lat、lon字段的字典对象,作为完整位置信息测试数据
|
|
|
|
|
o = {
|
|
|
|
|
'tid': 12, #zqx: 用户ID字段,值为12
|
|
|
|
|
'lat': 123.123, #zqx: 纬度字段,值为123.123
|
|
|
|
|
'lon': 134.341 #zqx: 经度字段,值为134.341
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# 使用客户端发送POST请求,将位置数据以JSON格式发送到/logtracks端点 #zqx: 使用client.post方法向/owntracks/logtracks路径发送POST请求,数据为JSON格式
|
|
|
|
|
self.client.post(
|
|
|
|
|
'/owntracks/logtracks', #zqx: 请求的目标URL路径
|
|
|
|
|
json.dumps(o), #zqx: 将字典o转换为JSON字符串
|
|
|
|
|
content_type='application/json') #zqx: 设置请求的内容类型为application/json
|
|
|
|
|
# 检查数据库中OwnTrackLog记录数量是否为1 #zqx: 查询OwnTrackLog模型的所有记录,检查记录数量是否为1
|
|
|
|
|
length = len(OwnTrackLog.objects.all()) #zqx: 获取OwnTrackLog所有对象的数量
|
|
|
|
|
self.assertEqual(length, 1) #zqx: 断言记录数量等于1
|
|
|
|
|
|
|
|
|
|
# 创建不完整的位置数据(缺少经度) #zqx: 创建缺少lon字段的字典对象,作为不完整位置信息测试数据
|
|
|
|
|
o = {
|
|
|
|
|
'tid': 12, #zqx: 用户ID字段,值为12
|
|
|
|
|
'lat': 123.123 #zqx: 纬度字段,值为123.123
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# 再次发送POST请求 #zqx: 使用client.post方法再次发送POST请求,数据为不完整的JSON格式
|
|
|
|
|
self.client.post(
|
|
|
|
|
'/owntracks/logtracks', #zqx: 请求的目标URL路径
|
|
|
|
|
json.dumps(o), #zqx: 将不完整的字典o转换为JSON字符串
|
|
|
|
|
content_type='application/json') #zqx: 设置请求的内容类型为application/json
|
|
|
|
|
# 检查数据库记录数量是否仍为1(不完整数据应该不被保存) #zqx: 查询OwnTrackLog模型的所有记录,检查记录数量是否仍为1
|
|
|
|
|
length = len(OwnTrackLog.objects.all()) #zqx: 获取OwnTrackLog所有对象的数量
|
|
|
|
|
self.assertEqual(length, 1) #zqx: 断言记录数量仍等于1,验证不完整数据未被保存
|
|
|
|
|
|
|
|
|
|
# 测试未登录用户访问/show_maps端点,应该返回302重定向 #zqx: 测试未登录用户访问/show_maps端点的行为
|
|
|
|
|
rsp = self.client.get('/owntracks/show_maps') #zqx: 使用client.get方法向/owntracks/show_maps路径发送GET请求
|
|
|
|
|
self.assertEqual(rsp.status_code, 302) #zqx: 断言响应状态码为302,表示重定向
|
|
|
|
|
|
|
|
|
|
# 创建超级用户用于测试 #zqx: 使用create_superuser方法创建超级用户用于后续测试
|
|
|
|
|
user = BlogUser.objects.create_superuser( #zqx: 调用BlogUser模型的create_superuser方法
|
|
|
|
|
email="liangliangyy1@gmail.com", #zqx: 设置用户邮箱
|
|
|
|
|
username="liangliangyy1", #zqx: 设置用户名
|
|
|
|
|
password="liangliangyy1") #zqx: 设置用户密码
|
|
|
|
|
|
|
|
|
|
# 使用创建的用户登录 #zqx: 使用client.login方法以创建的用户身份登录
|
|
|
|
|
self.client.login(username='liangliangyy1', password='liangliangyy1') #zqx: 使用用户名和密码登录
|
|
|
|
|
# 手动创建并保存一个OwnTrackLog实例 #zqx: 手动创建OwnTrackLog对象并保存到数据库
|
|
|
|
|
s = OwnTrackLog() #zqx: 创建OwnTrackLog实例
|
|
|
|
|
s.tid = 12 #zqx: 设置tid属性为12
|
|
|
|
|
s.lon = 123.234 #zqx: 设置lon属性为123.234
|
|
|
|
|
s.lat = 34.234 #zqx: 设置lat属性为34.234
|
|
|
|
|
s.save() #zqx: 保存对象到数据库
|
|
|
|
|
|
|
|
|
|
# 测试已登录用户访问各个端点,都应该返回200成功状态码 #zqx: 测试已登录用户访问不同端点的响应状态
|
|
|
|
|
rsp = self.client.get('/owntracks/show_dates') #zqx: 向/owntracks/show_dates路径发送GET请求
|
|
|
|
|
self.assertEqual(rsp.status_code, 200) #zqx: 断言响应状态码为200,表示请求成功
|
|
|
|
|
rsp = self.client.get('/owntracks/show_maps') #zqx: 向/owntracks/show_maps路径发送GET请求
|
|
|
|
|
self.assertEqual(rsp.status_code, 200) #zqx: 断言响应状态码为200,表示请求成功
|
|
|
|
|
rsp = self.client.get('/owntracks/get_datas') #zqx: 向/owntracks/get_datas路径发送GET请求
|
|
|
|
|
self.assertEqual(rsp.status_code, 200) #zqx: 断言响应状态码为200,表示请求成功
|
|
|
|
|
rsp = self.client.get('/owntracks/get_datas?date=2018-02-26') #zqx: 向带日期参数的/owntracks/get_datas路径发送GET请求
|
|
|
|
|
self.assertEqual(rsp.status_code, 200) #zqx: 断言响应状态码为200,表示请求成功
|