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/owntracks-tyx/tests.py

101 lines
3.2 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#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成功