|
|
#tyx
|
|
|
"""
|
|
|
owntracks 应用的测试用例
|
|
|
验证模型和视图功能的正确性
|
|
|
"""
|
|
|
|
|
|
import json
|
|
|
|
|
|
from django.test import Client, RequestFactory, TestCase
|
|
|
|
|
|
from accounts.models import BlogUser
|
|
|
from .models import OwnTrackLog
|
|
|
|
|
|
|
|
|
class OwnTrackLogTest(TestCase):
|
|
|
"""
|
|
|
OwnTrackLog 模型和视图的测试类
|
|
|
"""
|
|
|
|
|
|
def setUp(self):
|
|
|
"""
|
|
|
测试初始化方法
|
|
|
在每个测试方法执行前运行,准备测试环境
|
|
|
"""
|
|
|
self.client = Client() # Django测试客户端
|
|
|
self.factory = RequestFactory() # 请求工厂,用于创建请求对象
|
|
|
|
|
|
def test_own_track_log(self):
|
|
|
"""
|
|
|
测试位置日志功能
|
|
|
包括数据接收、存储和权限验证
|
|
|
"""
|
|
|
# 测试用例1:正常的位置数据提交
|
|
|
o = {
|
|
|
'tid': 12, # 用户ID
|
|
|
'lat': 123.123, # 纬度
|
|
|
'lon': 134.341 # 经度
|
|
|
}
|
|
|
|
|
|
# 发送POST请求提交位置数据
|
|
|
self.client.post(
|
|
|
'/owntracks/logtracks',
|
|
|
json.dumps(o), # 将字典转换为JSON字符串
|
|
|
content_type='application/json') # 设置内容类型为JSON
|
|
|
|
|
|
# 验证数据是否成功保存
|
|
|
length = len(OwnTrackLog.objects.all())
|
|
|
self.assertEqual(length, 1) # 应该有一条记录
|
|
|
|
|
|
# 测试用例2:缺少必要字段的数据提交
|
|
|
o = {
|
|
|
'tid': 12,
|
|
|
'lat': 123.123
|
|
|
# 缺少经度字段
|
|
|
}
|
|
|
|
|
|
# 发送不完整的数据
|
|
|
self.client.post(
|
|
|
'/owntracks/logtracks',
|
|
|
json.dumps(o),
|
|
|
content_type='application/json')
|
|
|
|
|
|
# 验证数据条数没有增加
|
|
|
length = len(OwnTrackLog.objects.all())
|
|
|
self.assertEqual(length, 1) # 应该还是只有一条记录
|
|
|
|
|
|
# 测试用例3:未登录用户访问地图页面
|
|
|
rsp = self.client.get('/owntracks/show_maps')
|
|
|
self.assertEqual(rsp.status_code, 302) # 应该重定向到登录页
|
|
|
|
|
|
# 创建超级用户用于后续测试
|
|
|
user = BlogUser.objects.create_superuser(
|
|
|
email="liangliangyy1@gmail.com",
|
|
|
username="liangliangyy1",
|
|
|
password="liangliangyy1")
|
|
|
|
|
|
# 登录超级用户
|
|
|
self.client.login(username='liangliangyy1', password='liangliangyy1')
|
|
|
|
|
|
# 创建测试位置记录
|
|
|
s = OwnTrackLog()
|
|
|
s.tid = 12
|
|
|
s.lon = 123.234
|
|
|
s.lat = 34.234
|
|
|
s.save()
|
|
|
|
|
|
# 测试用例4:登录用户访问日期列表页面
|
|
|
rsp = self.client.get('/owntracks/show_dates')
|
|
|
self.assertEqual(rsp.status_code, 200) # 应该返回200成功
|
|
|
|
|
|
# 测试用例5:登录用户访问地图页面
|
|
|
rsp = self.client.get('/owntracks/show_maps')
|
|
|
self.assertEqual(rsp.status_code, 200) # 应该返回200成功
|
|
|
|
|
|
# 测试用例6:获取位置数据(默认日期)
|
|
|
rsp = self.client.get('/owntracks/get_datas')
|
|
|
self.assertEqual(rsp.status_code, 200) # 应该返回200成功
|
|
|
|
|
|
# 测试用例7:获取指定日期的位置数据
|
|
|
rsp = self.client.get('/owntracks/get_datas?date=2018-02-26')
|
|
|
self.assertEqual(rsp.status_code, 200) # 应该返回200成功 |